Class UrlTag
- java.lang.Object
- javax.servlet.jsp.tagext.TagSupport
- org.springframework.web.servlet.tags.RequestContextAwareTag
- org.springframework.web.servlet.tags.HtmlEscapingAwareTag
- org.springframework.web.servlet.tags.UrlTag
- All Implemented Interfaces:
Serializable
,IterationTag
,JspTag
,Tag
,TryCatchFinally
,ParamAware
public class UrlTag extends HtmlEscapingAwareTag implements ParamAware
The<url>
tag creates URLs. Modeled after the JSTLc:url
tag with backwards compatibility in mind.Enhancements to the JSTL functionality include:
- URL encoded template URI variables
- HTML/XML escaping of URLs
- JavaScript escaping of URLs
Template URI variables are indicated in the
'value'
attribute and marked by braces '{variableName}'. The braces and attribute name are replaced by the URL encoded value of a parameter defined with the spring:param tag in the body of the url tag. If no parameter is available the literal value is passed through. Params matched to template variables will not be added to the query string.Use of the spring:param tag for URI template variables is strongly recommended over direct EL substitution as the values are URL encoded. Failure to properly encode URL can leave an application vulnerable to XSS and other injection attacks.
URLs can be HTML/XML escaped by setting the
'htmlEscape'
attribute to 'true'. Detects an HTML escaping setting, either on this tag instance, the page level, or theweb.xml
level. The default is 'false'. When setting the URL value into a variable, escaping is not recommended.Example usage:
<spring:url value="/url/path/{variableName}"> <spring:param name="variableName" value="more than JSTL c:url" /> </spring:url>
The above results in:
/currentApplicationContext/url/path/more%20than%20JSTL%20c%3Aurl
- Since:
- 3.0
- Author:
- Scott Andrews
- See Also:
ParamTag
, Serialized Form
Field Summary
Fields inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag
logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE
Fields inherited from class javax.servlet.jsp.tagext.TagSupport
id, pageContext
Fields inherited from interface javax.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
Fields inherited from interface javax.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
Constructor Summary
Constructors Constructor Description UrlTag()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addParam(Param param)
Callback hook for nested spring:param tags to pass their value to the parent tag.protected String
createQueryString(List<Param> params, Set<String> usedParams, boolean includeQueryStringDelimiter)
Build the query string from available parameters that have not already been applied as template params.int
doEndTag()
int
doStartTagInternal()
Called by doStartTag to perform the actual work.protected String
replaceUriTemplateParams(String uri, List<Param> params, Set<String> usedParams)
Replace template markers in the URL matching available parameters.void
setContext(String context)
Set the context path for the URL.void
setJavaScriptEscape(boolean javaScriptEscape)
Set JavaScript escaping for this tag, as boolean value.void
setScope(String scope)
Set the scope to export the URL variable to.void
setValue(String value)
Set the value of the URL.void
setVar(String var)
Set the variable name to expose the URL under.Methods inherited from class org.springframework.web.servlet.tags.HtmlEscapingAwareTag
htmlEscape, isDefaultHtmlEscape, isHtmlEscape, isResponseEncodedHtmlEscape, setHtmlEscape
Methods inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag
doCatch, doFinally, doStartTag, getRequestContext
Methods inherited from class javax.servlet.jsp.tagext.TagSupport
doAfterBody, findAncestorWithClass, getId, getParent, getValue, getValues, release, removeValue, setId, setPageContext, setParent, setValue
Constructor Detail
UrlTag
public UrlTag()
Method Detail
setContext
public void setContext(String context)
Set the context path for the URL. Defaults to the current context.
setVar
public void setVar(String var)
Set the variable name to expose the URL under. Defaults to rendering the URL to the current JspWriter.
setScope
public void setScope(String scope)
Set the scope to export the URL variable to. This attribute has no meaning unlessvar
is also defined.
setJavaScriptEscape
public void setJavaScriptEscape(boolean javaScriptEscape) throws JspException
Set JavaScript escaping for this tag, as boolean value. Default is "false".- Throws:
JspException
addParam
public void addParam(Param param)
Description copied from interface:ParamAware
Callback hook for nested spring:param tags to pass their value to the parent tag.- Specified by:
addParam
in interfaceParamAware
- Parameters:
param
- the result of the nestedspring:param
tag
doStartTagInternal
public int doStartTagInternal() throws JspException
Description copied from class:RequestContextAwareTag
Called by doStartTag to perform the actual work.- Specified by:
doStartTagInternal
in classRequestContextAwareTag
- Returns:
- same as TagSupport.doStartTag
- Throws:
JspException
- See Also:
TagSupport.doStartTag()
doEndTag
public int doEndTag() throws JspException
- Specified by:
doEndTag
in interfaceTag
- Overrides:
doEndTag
in classTagSupport
- Throws:
JspException
createQueryString
protected String createQueryString(List<Param> params, Set<String> usedParams, boolean includeQueryStringDelimiter) throws JspException
Build the query string from available parameters that have not already been applied as template params.The names and values of parameters are URL encoded.
- Parameters:
params
- the parameters to build the query string fromusedParams
- set of parameter names that have been applied as template paramsincludeQueryStringDelimiter
- true if the query string should start with a '?' instead of '&'- Returns:
- the query string
- Throws:
JspException
replaceUriTemplateParams
protected String replaceUriTemplateParams(String uri, List<Param> params, Set<String> usedParams) throws JspException
Replace template markers in the URL matching available parameters. The name of matched parameters are added to the used parameters set.Parameter values are URL encoded.
- Parameters:
uri
- the URL with template parameters to replaceparams
- parameters used to replace template markersusedParams
- set of template parameter names that have been replaced- Returns:
- the URL with template parameters replaced
- Throws:
JspException