2016-01-14 127 views
-1

我想了解现有的Spring MVC应用程序,在JSP页面中,我发现下面的代码标签在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

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

Java Standard EL Functions

Java标准EL功能(JSEL)提供了标准的EL功能Web应用程序开发。

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内容字符串。

只需在您的页面上打印HTML标记,例如<p>example<p>即可。使用$ {f:h(data.lastName)},您将能够在您的页面上查看<p>example<p>文字。但是,如果您使用$ {(data.lastName)},则只能在您的页面上看到example文本,因为此时HTML标记未被转义。

+0

您好@Sudharshan_SMD,感谢您的关心,但我在工作区找不到像<%@ taglib uri =“http://amateras.sf.jp/functions”prefix =“f”%>甚至在使用$ {f:h(data.lastName)}时也没有找到任何HTML标记。 –

+0

必须在页面上的某个位置包含标记库。你使用瓷砖吗?在你的jsp页面上尝试'查看源代码',你应该能够找到taglib。 –

+0

这个标签正在我的f中使用。 tld文件 –