You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2017/10/24 06:54:13 UTC

svn commit: r1813139 - /myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java

Author: tandraschko
Date: Tue Oct 24 06:54:12 2017
New Revision: 1813139

URL: http://svn.apache.org/viewvc?rev=1813139&view=rev
Log:
MYFACES-4165

Modified:
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java?rev=1813139&r1=1813138&r2=1813139&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java Tue Oct 24 06:54:12 2017
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.RandomAccess;
 import java.util.Set;
 import javax.faces.component.UIComponent;
+import javax.faces.component.UIParameter;
 import javax.faces.component.behavior.AjaxBehavior;
 import javax.faces.component.behavior.ClientBehaviorContext;
 import javax.faces.component.behavior.ClientBehaviorHolder;
@@ -115,13 +116,13 @@ public class HtmlCommandScriptRenderer e
         ajaxBehavior.setOnerror(commandScript.getOnerror());
         ajaxBehavior.setOnevent(commandScript.getOnevent());
         
-        Collection<ClientBehaviorContext.Parameter> eventParameters = new ArrayList<>();
+        Collection<ClientBehaviorContext.Parameter> eventParameters = null;    
         //eventParameters.add(new ClientBehaviorContext.Parameter("params", "o"));
         ClientBehaviorContext ccc = ClientBehaviorContext.createClientBehaviorContext(
                                     context, component, "action",
                                     commandScript.getClientId(context), eventParameters);
         
-        script.append(makeAjax(ccc, ajaxBehavior, commandScript).toString());
+        script.append(makeAjax(context, ccc, ajaxBehavior, commandScript).toString());
         script.decreaseIndent();
         script.append("}");
         
@@ -212,7 +213,7 @@ public class HtmlCommandScriptRenderer e
      * @param commandScript the component
      * @return a fully working javascript with calls into jsf.js
      */
-    private StringBuilder makeAjax(ClientBehaviorContext context, AjaxBehavior behavior,
+    private StringBuilder makeAjax(FacesContext facesContext, ClientBehaviorContext context, AjaxBehavior behavior,
             HtmlCommandScript commandScript)
     {
         StringBuilder retVal = SharedStringBuilder.get(context.getFacesContext(), AJAX_SB, 60);
@@ -378,18 +379,29 @@ public class HtmlCommandScriptRenderer e
                 for (int i = 0, size = list.size(); i < size; i++)
                 {
                     ClientBehaviorContext.Parameter param = list.get(i);
-                    append(paramBuffer, parameterList, param);
+                    append(paramBuffer, parameterList, param.getName(), param.getValue());
                 }
             }
             else
             {
                 for (ClientBehaviorContext.Parameter param : params)
                 {
-                    append(paramBuffer, parameterList, param);
+                    append(paramBuffer, parameterList, param.getName(), param.getValue());
                 }
             }
         }
-
+        
+        List<UIParameter> uiParams = HtmlRendererUtils.getValidUIParameterChildren(
+                facesContext, commandScript.getChildren(), false, false);
+        if (uiParams != null && uiParams.size() > 0)
+        {
+            for (int i = 0, size = uiParams.size(); i < size; i++)
+            {
+                UIParameter param = uiParams.get(i);
+                append(paramBuffer, parameterList, param.getName(), param.getValue());
+            }
+        }
+            
         paramBuffer.setLength(0);
         paramBuffer.append('\'');
         paramBuffer.append(ClientBehaviorContext.BEHAVIOR_EVENT_PARAM_NAME);
@@ -411,7 +423,7 @@ public class HtmlCommandScriptRenderer e
         return retVal;
     }
 
-    private void append(StringBuilder paramBuffer, List<String> parameterList, ClientBehaviorContext.Parameter param)
+    private void append(StringBuilder paramBuffer, List<String> parameterList, String paramName, Object paramValue)
     {
         //TODO we may need a proper type handling in this part
         //lets leave it for now as it is
@@ -420,14 +432,16 @@ public class HtmlCommandScriptRenderer e
         //ANS: Both name and value should be quoted
         paramBuffer.setLength(0);
         paramBuffer.append('\'');
-        paramBuffer.append(param.getName());
+        paramBuffer.append(paramName);
         paramBuffer.append("\':\'");
-        paramBuffer.append(param.getValue().toString());
+        if (paramValue != null)
+        {
+            paramBuffer.append(paramValue.toString());
+        }
         paramBuffer.append('\'');
         parameterList.add(paramBuffer.toString());
     }
 
-
     private StringBuilder buildOptions(StringBuilder retVal, List<String> options)
     {
         retVal.setLength(0);