Edit on GitHub << back to Tag Reference

# url

Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

> NOTE: The `id` attribute is deprecated in Struts 2.1.x, and has been replaced by the `var` attribute.

## Description

This tag is used to create a URL.

You can use the <param> tag inside the body to provide additional request parameters. If the value of a param is an Array or an Iterable all the values will be added to the URL.

> NOTE: By default request parameters will be separated using escaped ampersands (i.e., &). This is necessary for XHTML compliance, however, when using the URL generated by this tag with the `<s:property>` tag, the escapeAmp attribute should be used to disable ampersand escaping.

> NOTE: When includeParams is `all` or `get`, the parameter defined in a `<param>` tag will take precedence over any params included due to the includeParams attribute. For example, in Example 3 below, if there is a id parameter in the url where the page this tag is included like `http://<host>:<port>/<context>/editUser.action?id=3333&name=John` the generated url will be `http://<host>:<port>/<context>/editUser.action?id=22&name=John` because the parameter defined in the `param` tag will take precedence

### Setting a default value for `includeParams`

The property `struts.url.includeParams` can be used to set the default value of the `includeParams` attribute.

Setting the default value of includeParams

    <struts>
       ...
       <constant name="struts.url.includeParams" value="none" />
       ...
    </struts>

See Constant Configuration for further information.

> NOTE: As of Struts 2.1.3 the includeParams constant defaults to `none`.

This tag is used to create a URL

## Attributes

#### Dynamic Attributes Allowed: false
#### Name | #### Required | #### Default | #### Evaluated | #### Type | #### Description
--- | --- | --- | --- | --- | ---
action | false |  | false | String | The action to generate the URL for, if not using value
anchor | false |  | false | String | The anchor for this URL
encode | false | true | false | Boolean | Whether to encode parameters
escapeAmp | false | true | false | Boolean | Specifies whether to escape ampersand (&) to (&amp;) or not
forceAddSchemeHostAndPort | false | false | false | Boolean | Specifies whether to force the addition of scheme, host and port or not
includeContext | false | true | false | Boolean | Whether actual context should be included in URL
includeParams | false | none | false | String | The includeParams attribute may have the value 'none', 'get' or 'all'
method | false |  | false | String | The method of action to use
namespace | false |  | false | String | The namespace to use
performClearTagStateForTagPoolingServers | false | false | false | Boolean | Whether to clear all tag state during doEndTag() processing (if applicable)
portletMode | false |  | false | String | The resulting portlet mode
portletUrlType | false |  | false | String | Specifies if this should be a portlet render or action URL. Default is "render". To create an action URL, use "action".
scheme | false |  | false | String | Set scheme attribute
value | false |  | false | String | The target value to use, if not using action
var | false |  | false | String | Name used to reference the value pushed into the Value Stack (scope: action).
windowState | false |  | false | String | The resulting portlet window state

> NOTE: When the `var` attribute is used with the `url` tag, the tag’s generated URL value will be placed into the request scope in addition to the action scope.

## Examples

    <!-- Example 1 -->
    <s:url value="editGadget.action">
        <s:param name="id" value="%{selected}" />
    </s:url>

    <!-- Example 2 -->
    <s:url action="editGadget">
        <s:param name="id" value="%{selected}" />
    </s:url>

    <!-- Example 3-->
    <s:url includeParams="get">
        <s:param name="id" value="%{'22'}" />
    </s:url>