JSP页面中的标签

时间:2016-01-14 05:22:40

标签: java spring jsp model-view-controller jstl

我正在尝试理解现有的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的用途是什么?它代表什么?

1 个答案:

答案 0 :(得分:1)

看起来你的代码使用了JSEL标记库。

Java Standard EL Functions

  

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代码不会被转义。