JSP 页中的标签

Tags in JSP Page

我试图了解现有的 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有什么用,它代表什么?

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

Java Standard EL Functions

Java Standard EL Functions(JSEL) provides standard EL functions for web application development.

您的 jsp 页面必须包含以下行,以包含标签库:

<%@ 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 标签没有被转义。