You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/10/02 07:09:26 UTC

svn commit: r820885 - in /myfaces: core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java

Author: lu4242
Date: Fri Oct  2 05:09:25 2009
New Revision: 820885

URL: http://svn.apache.org/viewvc?rev=820885&view=rev
Log:
MYFACES-2372 h:commandButton should render UIParameter children (thanks to Jakob Korherr for provide this patch)

Modified:
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java?rev=820885&r1=820884&r2=820885&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java Fri Oct  2 05:09:25 2009
@@ -20,6 +20,7 @@
 
 import java.io.StringWriter;
 
+import javax.faces.component.UIParameter;
 import javax.faces.component.behavior.AjaxBehavior;
 import javax.faces.component.html.HtmlCommandButton;
 import javax.faces.component.html.HtmlForm;
@@ -69,6 +70,10 @@
                 form.getFamily(),
                 form.getRendererType(),
                 new HtmlFormRenderer());
+        facesContext.getRenderKit().addRenderer(
+                "javax.faces.Input",
+                "javax.faces.Hidden",
+                new HtmlHiddenRenderer());
     }
     
     public void tearDown() throws Exception {
@@ -183,4 +188,34 @@
         
     }
     
+    /**
+     * If a h:commandButton has any UIParameter children, he should
+     * render them with a renderer of family javax.faces.Input and
+     * renderer type javax.faces.Hidden.
+     * If the disable attribute of a child UIParameter is true,
+     * he should be ignored.
+     * @throws Exception
+     */
+    public void testCommandButtonRendersNotDisabledUIParameters() throws Exception
+    {
+        UIParameter param1 = new UIParameter();
+        param1.setName("param1");
+        param1.setValue("value1");
+        param1.setDisable(true);
+        UIParameter param2 = new UIParameter();
+        param2.setName("param2");
+        param2.setValue("value2");
+        commandButton.getChildren().add(param1);
+        commandButton.getChildren().add(param2);
+        
+        commandButton.setValue("commandButton");
+        
+        commandButton.encodeAll(facesContext);
+        String output = writer.getWriter().toString();
+        assertFalse(output.contains("param1"));
+        assertFalse(output.contains("value1"));
+        assertTrue(output.contains("param2"));
+        assertTrue(output.contains("value2"));
+    }
+    
 }

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java?rev=820885&r1=820884&r2=820885&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java Fri Oct  2 05:09:25 2009
@@ -19,8 +19,6 @@
 package org.apache.myfaces.shared.renderkit.html;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -31,6 +29,7 @@
 import javax.faces.component.behavior.ClientBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlInputHidden;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
@@ -200,6 +199,24 @@
         
         HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(
             findNestingForm(uiComponent, facesContext).getForm(), facesContext, writer);
+        
+        // render the UIParameter children of the commandButton (since 2.0)
+        for (UIComponent child : uiComponent.getChildren())
+        {
+            if (child.getClass().equals(UIParameter.class))
+            {
+                UIParameter parameter = (UIParameter) child;
+                // check for the disable attribute
+                if (parameter.isDisable())
+                {
+                    continue;
+                }
+                HtmlInputHidden parameterComponent = new HtmlInputHidden();
+                parameterComponent.setId(parameter.getName());
+                parameterComponent.setValue(parameter.getValue());
+                parameterComponent.encodeAll(facesContext);
+            }
+        }
     }
 
     protected String buildBehaviorizedOnClick(UIComponent uiComponent, Map<String, List<ClientBehavior>> behaviors, FacesContext facesContext, ResponseWriter writer) {