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;
  *  &lt;ui:param name="context" value="[2]"/&gt;
  * &lt;/ui:component&gt;
  * </pre>
+ * <p/>
+ * Whether to suppress empty parameters:
+ * <pre>
+ * &lt;s:a action="eventAdd" accesskey="a"&gt;
+ *   &lt;s:text name="title.heading.eventadd" /&gt;
+ *   &lt;s:param name="bean.searchString" value="%{bean.searchString}" /&gt;
+ *   &lt;s:param name="bean.filter" value="%{bean.filter}" /&gt;
+ *   &lt;s:param name="bean.pageNum" value="%{pager.pageNumber}" /&gt;
+ *   &lt;s:param name="suppressEmptyParameters" value="true"/&gt;
+ * &lt;/s:a&gt;
+ * </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>


Reply via email to