2011-06-27 57 views
3

我使用C:設置和c:如果在JSP(我使用彈簧MVC 3)<C:設置和<C:如果在彈簧

<c:set var="myVar" value="${JavaClass.MY_KEY}"/> 
<c:if test="${myVar == code}"> 
    Do Somthing 
</c:if> 

但在這種情況下,C:若代碼是沒有得到執行。

在i得到(無C:組)

<c:if test="${'ABC' == code}"> 
    Do Somthing 
</c:if>  

它workes。

誰能告訴我什麼,我做錯了

感謝

+0

相關:http://stackoverflow.com/questions/3732608/how-to-reference-constants-in-el – BalusC

回答

4

${JavaClass.MY_KEY}會在頁面中的對象,然後請求,然後會話,應用範圍,下JavaClass存儲屬性名稱。如果它找到一個,它會調用此對象的方法getMY_KEY()

我懷疑這不是你認爲這個表達式在做什麼。由於在任何範圍內都沒有這樣的對象,因此它評估爲空字符串(或者null,我不能肯定地說)。

無法使用JSP EL訪問類常量。你可以做的最好的是在某個範圍內存儲一些對象,getters返回常量。

4

您無法直接使用JSP EL訪問JavaClass.MY_KEY,但是您可以使用scriptlet單行*來執行此操作。

<c:set var="myVar" value="<%=JavaClass.MY_KEY%>"/> 

*一般情況下,小腳本應該是可以避免的,但直到JSP EL提供訪問它們的一種更好的方式,這些類型的可引用靜態字段和枚舉常量的俏皮話是有用的。