2010-11-18 58 views
0

我正在嘗試使用OGNL來評估會話是否有效,以便顯示一些信息。爲此我有以下JSPStruts2 ognl執行請求方法

[...] 
<s:if test="request.isRequestedSessionValid()"> 
[...] (show user name, etc) 
</s:if> 

但它不起作用。我也試過「#request.isRequestedSessionValid()」,「%{request.isRequestedSessionValid()}」和「{request.isRequestedSessionValid()}」,但我總是得到一個錯誤消息target java.lang.NullPointerException:target方法isRequestedSessionValid或[OgnlValueStack]無法找到方法[#request.isRequestedSessionValid()]。我究竟做錯了什麼?

謝謝!

回答

0

好的,現在我有機會深入瞭解這一點,我拋棄了我的舊答案。 #request將不起作用,因爲這基本上等效於JSP EL表達式${requestScope.requestedSessionIdValid},但該屬性不是請求範圍屬性,它的實際屬性爲HttpServletRequest

您可以輕鬆地與JSP EL使用做到這一點:

<c:if test="${pageContext.request.requestedSessionIdValid}"> 
    ... 
</c:if> 

我不知道,還有一個同樣簡潔的方式在此取得與OGNL。

+0

似乎沒有工作。我嘗試了「%{#request.requestedSessionIdValid}」,「%{#request.isRequestedSessionIdValid}」和「%{#request.isRequestedSessionIdValid()}」,但沒有成功。最後一個給了我這個例外「[OgnlValueStack]無法找到方法[#request.isRequestedSessionIdValid()]」,我不明白。該請求具有該方法,那麼爲什麼它沒有選擇它? – 2010-11-19 13:30:52