2014-04-05 160 views
-1

我有一個JSP頁面,在該頁面中,我嘗試使用使用jstl和struts2標籤的頁面範圍屬性。 下面的代碼塊是,EL不能在jsp頁面中工作

 <%@ taglib uri="/struts-tags" prefix="s" %> 
     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

     <c:set var="test" value="ramesh"/> 
     <c:set var="test1" value="${test}"/> 
     <s:set var="test2" value="${test}" /> 

<s:set>標籤產生以下異常「根據TLD或在標籤文件屬性指令,屬性值不接受任何表現形式」。

我有兩個問題。

1)${test}適用於<c:set>標籤。

2)${test}<s:set>標記中使用時不起作用。爲什麼?

+0

由於*屬性值不接受任何表達式*。 –

+0

@Aleksandr但爲什麼有效。 – reddy

+0

顯然是因爲''接受表達式。 –

回答

1

EL和JSTL現在都在Java EE標準中,所以我認爲它們可以很好地配合。

但是,當在struts 2標籤中,因爲struts 2有它們的表達語言 - OGNL,所以我認爲他們更喜歡在它們的標籤中使用OGNL到EL,這就是它們不支持EL的原因。這些是我的猜測。

0

從Apache的鏈路

From Apache FAQ link

作爲Struts的版本2.0.9的JSTL/JSP表達式語言(EL)已經爲Struts標記屬性,其評價OGNL被禁用。這是針對安全漏洞的預防措施,這種安全漏洞可能是由於第一次將屬性作爲JSTL/JSP EL表達式處理並將結果作爲OGNL表達式處理時發生的雙重評估而導致的。解決方案是直接使用OGNL表達式在Struts標記中表示所有動態屬性值。