2016-01-14 164 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文件 –