我正在尝试理解现有的Spring MVC应用程序,在JSP页面中我找到了下面的代码
<c:forEach items="${responseData}" var="data">
<li>
<c:choose>
<c:when test="${data.firstName}">
<span class="strike">
${f:h(data.lastName)}
</span>
</c:when>
<c:otherwise>
Somem JSP code
在这里,我无法理解代码${f:h(data.lastName)}
的含义,即使我删除f:h
,也就是说我使用${(data.lastName)}
代替${f:h(data.lastName)}
,那么它给了我同样的东西结果,那么f:h
的用途是什么?它代表什么?
答案 0 :(得分:1)
看起来你的代码使用了JSEL标记库。
Java标准EL函数(JSEL)为Web应用程序开发提供标准EL函数。
您的jsp页面必须包含以下行,以包含taglib:
<%@ taglib uri="http://amateras.sf.jp/functions" prefix="f" %>
如果您浏览JSEL提供的函数说明,则函数f:h(String value)
用于 转义HTML标记 。
$ 是使用 JSP EL 的语法。
因此,代码$ {f:h(data.lastName)}和$ {(data.lastName)}之间的区别是,$ {f:h(data.lastName)}只是转义中的任何HTML内容字符串。
尝试在您的网页上打印HTML标记<p>example<p>
。使用$ {f:h(data.lastName)},您就可以在页面上查看<p>example<p>
文字了。但是,如果您使用$ {(data.lastName)},则只能在页面上看到example
文字,因为这次HTML代码不会被转义。