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) {