2013-05-29 48 views
2

我正在開發一個Struts 2.3應用程序。在該應用程序中,我從JSP調用一個靜態實用程序方法,該方法將HttpServletRequest對象作爲參數,並在處理請求後返回字符串。當我嘗試使用JSP腳本,方法得到了調用與像適當的參數:請求對象沒有傳遞給在struts2中使用OGNL的靜態方法

<% 
    String resultStr = com.testapp.util.Utility.getResult(request); 
%> 

但是,當我試圖使用OGNL進行同樣的邏輯,方法得到了與空請求對象調用的參數,而不是像實際的請求對象:

<s:set name="resultStr" var="resultStr" 
     value="@[email protected](request)" /> 

我也OGNL但在這種情況下,方法並沒有被調用嘗試#request而不是request

回答

1

將此常量放在配置文件中以啓用靜態方法訪問。

<constant name="struts.ognl.allowStaticMethodAccess" value="true" /> 

使用

<s:set name="resultStr" var="resultStr" value="@[email protected]()" /> 

,並在getResult() {

HttpServletRequest request = ServletActionContext.getRequest(); 
+0

它已經配置。正如我所提到的,我可以使用OGNL調用靜態方法,但是我沒有在方法中傳遞'request'對象。它是空的。 –

+1

你不需要它使用'ServletActionContext.getRequest()' –

+0

我試過'HttpServletRequest request = ServletActionContext.getRequest();'而不是傳遞'request'對象,它工作:)感謝您的快速幫助!但是我仍然無法理解爲什麼'request'對象沒有作爲參數傳遞。 –

相關問題