org.apache.struts2.components

## Class Param

- java.lang.Object
- - org.apache.struts2.components.Component
  - - org.apache.struts2.components.Param

-     public class Param
      extends Component

  This tag can be used to parameterize other tags.
  The include tag and bean tag are examples of such tags.

  The parameters can be added with or without a name as key. If the tag provides a name attribute the parameters are added using the `addParamter` method. For unnamed parameters the Tag must implement the `Param.UnnamedParametric` interface defined in this class (e.g. The TextTag does this).

  This tag has the following two paramters.

  - name (String) - the name of the parameter
  - value (Object) - the value of the parameter
  - suppressEmptyParameters (boolean) - whether to suppress this parameter if empty

  Note: When you declare the param tag, the value can be defined in either a `value` attribute or as text between the start and end tag. Struts behaves a bit different according to these two situations. This is best illustrated using an example:
  <param name="color">blue</param> <-- (A) -->
  <param name="color" value="blue"/> <-- (B) -->
  In the first situation (A) the value would be evaluated to the stack as a `java.lang.String` object. And in situation (B) the value would be evaluated to the stack as a `java.lang.Object` object.
  For more information see WW-808.

  Examples

       <ui:component>
        <ui:param name="key"     value="[0]"/>
        <ui:param name="value"   value="[1]"/>
        <ui:param name="context" value="[2]"/>
       </ui:component>

  Whether to suppress empty parameters:

       <s:url action="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}" suppressEmptyParameters="true" />
       </s:url>

  where the key will be the identifier and the value the result of an OGNL expression run against the current ValueStack.

  This second example demonstrates how the text tag can use parameters from this param tag.

       <s:text name="cart.total.cost">
           <s:param value="#session.cartTotal"/>
       </s:text>

  See Also:
    `Include`, `Bean`, `Text`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `Param.UnnamedParametric` Tags can implement this to support nested param tags without the `name` attribute.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `name`
    `protected boolean` | `suppressEmptyParameters`
    `protected String` | `value`

    - ### Fields inherited from class org.apache.struts2.components.Component

      `actionMapper, COMPONENT_STACK, devMode, escapeHtmlBody, parameters, performClearTagStateForTagPoolingServers, stack, standardAttributesMap, throwExceptionOnELFailure`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Param(ValueStack stack)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `end(Writer writer, String body)` Callback for the end tag of this component.
    `void` | `setName(String name)`
    `void` | `setSuppressEmptyParameters(boolean suppressEmptyParameters)`
    `void` | `setValue(String value)`
    `boolean` | `usesBody()` Overwrite to set if body should be used.

    - ### Methods inherited from class org.apache.struts2.components.Component

      `addAllParameters, addParameter, clearStandardAttributesMap, completeExpression, copyParams, determineActionURL, determineNamespace, end, escapeHtmlBody, fieldError, findAncestor, findString, findString, findValue, findValue, findValue, getAttributes, getComponentStack, getNamespace, getParameters, getPerformClearTagStateForTagPoolingServers, getStack, getStandardAttributes, isAcceptableExpression, isValidTagAttribute, popComponentStack, setActionMapper, setDevMode, setEscapeHtmlBody, setNotExcludedAcceptedPatterns, setPerformClearTagStateForTagPoolingServers, setThrowExceptionsOnELFailure, setUrlHelper, start, stripExpression, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### name

          protected String name

    - #### value

          protected String value

    - #### suppressEmptyParameters

          protected boolean suppressEmptyParameters

  - ### Constructor Detail

    - #### Param

          public Param(ValueStack stack)

  - ### Method Detail

    - #### end

          public boolean end(Writer writer,
                             String body)

      Description copied from class: `Component`
      Callback for the end tag of this component. Should the body be evaluated again?
      NOTE: will pop component stack.
      Overrides:
        `end` in class `Component`
      Parameters:
        `writer` - the output writer.
        `body` - the rendered body.
      Returns:
        true if the body should be evaluated again

    - #### usesBody

          public boolean usesBody()

      Description copied from class: `Component`
      Overwrite to set if body should be used.
      Overrides:
        `usesBody` in class `Component`
      Returns:
        always false for this component.

    - #### setName

          public void setName(String name)

    - #### setValue

          public void setValue(String value)

    - #### setSuppressEmptyParameters

          public void setSuppressEmptyParameters(boolean suppressEmptyParameters)

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.