2

我正在开发一个 Struts 2.3 应用程序。在该应用程序中,我从 JSP 调用一个静态实用程序方法,该方法将HttpServletRequest对象作为参数并在处理请求后返回一个字符串。当我尝试使用 JSP scriptlet 时,使用正确的参数调用方法,例如:

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

但是当我尝试将 OGNL 用于相同的逻辑时,方法被调用时使用空请求对象作为参数,而不是实际的请求对象,例如:

<s:set name="resultStr" var="resultStr"
       value="@com.testapp.util.Utility@getResult(request)" /> 

我也尝试过#request而不是request在 OGNL 中,但在这种情况下,方法没有被调用。

4

1 回答 1

1

将此常量放在配置文件中以启用静态方法访问。

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

利用

<s:set name="resultStr" var="resultStr" value="@com.testapp.util.Utility@getResult()" /> 

并且在getResult() {

HttpServletRequest request = ServletActionContext.getRequest();
于 2013-05-29T13:27:36.767 回答