Author: lukaszlenart Date: Fri Oct 18 09:16:34 2013 New Revision: 1533366 URL: http://svn.apache.org/r1533366 Log: WW-4088 Defines new suppressEmptyParams flag
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ParamTag.java struts/struts2/trunk/core/src/site/resources/tags/param.html Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java?rev=1533366&r1=1533365&r2=1533366&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java Fri Oct 18 09:16:34 2013 @@ -44,6 +44,7 @@ import java.io.Writer; * <ul> * <li>name (String) - the name of the parameter</li> * <li>value (Object) - the value of the parameter</li> + * <li>suppressEmptyParameters (boolean) - whether to suppress empty parameters</li> * </ul> * <!-- END SNIPPET: params --> * <p/> @@ -67,6 +68,17 @@ import java.io.Writer; * <ui:param name="context" value="[2]"/> * </ui:component> * </pre> + * <p/> + * Whether to suppress empty parameters: + * <pre> + * <s:a action="eventAdd" accesskey="a"> + * <s:text name="title.heading.eventadd" /> + * <s:param name="bean.searchString" value="%{bean.searchString}" /> + * <s:param name="bean.filter" value="%{bean.filter}" /> + * <s:param name="bean.pageNum" value="%{pager.pageNumber}" /> + * <s:param name="suppressEmptyParameters" value="true"/> + * </s:a> + * </pre> * <!-- END SNIPPET: example --> * <p/> * <!-- START SNIPPET: exampledescription --> @@ -91,8 +103,10 @@ import java.io.Writer; */ @StrutsTag(name="param", tldTagClass="org.apache.struts2.views.jsp.ParamTag", description="Parametrize other tags") public class Param extends Component { + protected String name; protected String value; + protected boolean suppressEmptyParameters; public Param(ValueStack stack) { super(stack); @@ -111,7 +125,14 @@ public class Param extends Component { } Object value = findValue(this.value); - component.addParameter(name, value); + if (suppressEmptyParameters) { + String potentialValue = (String) value; + if (potentialValue != null && potentialValue.length() > 0) { + component.addParameter(name, value); + } + } else { + component.addParameter(name, value); + } } } else { if (component instanceof UnnamedParametric) { @@ -123,7 +144,7 @@ public class Param extends Component { return super.end(writer, ""); } - + public boolean usesBody() { return true; } @@ -138,6 +159,11 @@ public class Param extends Component { this.value = value; } + @StrutsTagAttribute(description="Whether to suppress empty parameters", type="Boolean", defaultValue="false") + public void setSuppressEmptyParameters(boolean suppressEmptyParameters) { + this.suppressEmptyParameters = suppressEmptyParameters; + } + /** * Tags can implement this to support nested param tags without the <tt>name</tt> attribute. * <p/> Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ParamTag.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ParamTag.java?rev=1533366&r1=1533365&r2=1533366&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ParamTag.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ParamTag.java Fri Oct 18 09:16:34 2013 @@ -21,13 +21,12 @@ package org.apache.struts2.views.jsp; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.components.Component; import org.apache.struts2.components.Param; -import com.opensymphony.xwork2.util.ValueStack; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @see Param @@ -38,6 +37,7 @@ public class ParamTag extends ComponentT protected String name; protected String value; + protected boolean suppressEmptyParameters; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Param(stack); @@ -49,6 +49,7 @@ public class ParamTag extends ComponentT Param param = (Param) component; param.setName(name); param.setValue(value); + param.setSuppressEmptyParameters(suppressEmptyParameters); } public void setName(String name) { @@ -58,4 +59,8 @@ public class ParamTag extends ComponentT public void setValue(String value) { this.value = value; } + + public void setSuppressEmptyParameters(boolean suppressEmptyParameters) { + this.suppressEmptyParameters = suppressEmptyParameters; + } } Modified: struts/struts2/trunk/core/src/site/resources/tags/param.html URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/param.html?rev=1533366&r1=1533365&r2=1533366&view=diff ============================================================================== --- struts/struts2/trunk/core/src/site/resources/tags/param.html (original) +++ struts/struts2/trunk/core/src/site/resources/tags/param.html Fri Oct 18 09:16:34 2013 @@ -42,6 +42,14 @@ Please do not edit it directly. <td align="left" valign="top">Name of Parameter to set</td> </tr> <tr> + <td align="left" valign="top">suppressEmptyParameters</td> + <td align="left" valign="top">false</td> + <td align="left" valign="top">false</td> + <td align="left" valign="top">false</td> + <td align="left" valign="top">Boolean</td> + <td align="left" valign="top">Whether to suppress empty parameters</td> + </tr> + <tr> <td align="left" valign="top">value</td> <td align="left" valign="top">false</td> <td align="left" valign="top">The value of evaluating provided name against stack</td>