url标签用于创建一个URL。
在标签体内可以使用param标签,来提供附加的请求参数。如果param标签的value属性是一个数组或者Iterator,那么所有的值都将被附加给URL。
属性:
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 & or not |
forceAddSchemeHostAndPort | false | false | false | Boolean | Specifies whether to force the addition of scheme, host and port or not |
id | false | false | String | Deprecated. Use 'var' instead | |
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 | |
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 | |
windowState | false | false | String | The resulting portlet window state |
备注:
(1)如果同时指定了action和value,那么将优先使用value属性的值来生成URL;
(2)如果action和value属性都没有指定,那么将使用当前页面的URL;
(3)escapeAmp属性的默认值为true,因此请求参数将使用转义后和号&来分隔(即:&)。这是为了和XHTML一致,然而,当使用property标签来输出url标签生成URL时,应该将escapeAmp属性设为false来禁止和号&的转义;
(4)includeContext属性的默认值为true,即在生成URL中包含Web应用程序的上下文路径,但在与标签的action和value属性一起使用时,其行为会有有些不同。
当与action属性一起使用时,生成的URL始终会包含上下文路径;
当与value属性一起使用时,如果value属性是以斜杠(/)开始(例如:/urlTag.action),那么生成的URL将包含上下文路径;如果value属性指定的是相对路径(例如:urlTag.action),那么生成的URL将不包含上下文路径;
(5)如果includeParams属性的值是get,这生成的URL中将包含GET请求提交的参数;如果值是all,那么生成的URL中也将包含POST请求提交的参数;如果不希望生成的URL中包含任何用户提交的请求参数,那么可以将该属性设为none。
示例:
使用当前页面URL生成URL <s:url/> 使用namepsace和action属性的值生成URL <s:url action="urlTag" namespace="/a/b"> 使用forceAddSchemeHostAndPort属性强制添加schema、主机和端口 <s:url value="urlTag.action" forceAddSchemeHostAndPort="true"/> 将includeParams属性设为true,使用嵌套的param标签附加请求参数 <s:url value="urlTag.action" includeParams="none"> <s:param name="id" value="1"/> </s:url> 使用id属性和escapeAmp属性,在url标签结束后使用property标签输出生成URL <s:url value="urlTag.action" id="urlTag" escapeAmp="false"> <s:param name="id" value="1"/>
<s:param name="code" value="2"/> </s:url> <s:property value="#urlTag"/>
注:
(1)使用嵌套的param标签附加的请求参数,它们的优先级比用户提交的请求参数要高,因此如果原始的请求参数中有同名的参数,那么它将被覆盖;
(2)指定id属性后,生成的URL将被保存到OgnlContext中;通过将escapeAmp属性设为false来禁止和号&的转义,生成的URL是:urlTag.action?id=1&code=2,浏览器中显示的为:urlTag.action?id=1&code=2。
如果将escapeAmp属性设为true(默认),那么生成的URL是:urlTag.action?id=1&amp;code=2,浏览器中显示为urlTag.action?id=1&code=2。