【问题标题】:Tags in JSP PageJSP 页面中的标签
【发布时间】:2016-04-19 08:18:13
【问题描述】:

我正在尝试了解现有的 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 代表什么?

【问题讨论】:

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


    【解决方案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 标记,例如 &lt;p&gt;example&lt;p&gt;。使用 ${f:h(data.lastName)},您将能够在您的页面上查看 &lt;p&gt;example&lt;p&gt; 文本。但是,如果您使用 ${(data.lastName)},您将只能在页面上看到 example 文本,因为此时 HTML 标记不会转义。

    【讨论】:

    • 嗨 @Sudharshan_SMD ,感谢您的关注,但我在我的工作区中找不到像 amateras.sf.jp/functions" prefix="f" %> 这样的东西,即使我找到了'在使用 ${f:h(data.lastName)} 时找不到任何 HTML 标签
    • 您的页面上必须包含标签库。你在用瓷砖吗?在渲染的 jsp 页面上尝试“查看源代码”,您应该能够找到 taglib。
    • java.sun.com/xml/ns/javaee" xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:schemaLocation="java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> 这个标签被用于我的 f.tld 文件
    • 苏达山谢谢。我知道了 f 是我自己的库,h 是这个库中的一个函数
    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多