JSTL标签会自动转义HTML吗?

Cod*_*lue 3 java jstl

在JSTL中有一个表达式如

<c:out value="${user.firstName}"/> 将转义user.firstName中包含的任何HTML.

但是,它是否适用于所有JSTL标签?例如,将表达式

href="<c:url value="/users/">
<c:param name="firstName" value="${user.firstName}"/>
</c:url>"
Run Code Online (Sandbox Code Playgroud)

还逃脱HTML?

JB *_*zet 5

不,除了<c:out>转义XML 之外没有标签.例如:<fmt:message>不逃避XML.这允许在资源包中放置HTML标记或转义序列.

<c:param>url-code对参数值.但是将两个<c:param>放在一个单独的内容中<c:url>会产生一个未转义的&:someUrl?foo=bar&baz=zim.要正确地转义它&,将URL存储在变量中,并使用<c:out>或fn:escapeXml来转义变量:

<c:url var="someUrl" var="theUnescapedUrl">
    <c:param name="foo" value="bar"/>
    <c:param name="baz" value="zim"/>
</c:url>
<a href="<c:out value='${theUnescapedUrl}'/>">click here</a>
Run Code Online (Sandbox Code Playgroud)

要么

<a href="${fn:escapeXml(theUnescapedUrl)}">click here</a>
Run Code Online (Sandbox Code Playgroud)