java - 在struts2中使用OGNL未将请求对象传递给静态方法

标签 java jsp struts2 ognl scriptlet

我正在开发一个 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)" /> 

我还在 OGNL 中尝试了 #request 而不是 request 但在那种情况下方法没有被调用。

最佳答案

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

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

使用

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

并且在 getResult() {

HttpServletRequest request = ServletActionContext.getRequest();

关于java - 在struts2中使用OGNL未将请求对象传递给静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815151/

相关文章:

java - Struts 2 验证错误

java - 使用 Java、Struts 2 和 AJAX 下载文件

java - 如何使用 Selenium 和 Java 找到并单击选择 boolean 复选框

java - 如何在不使用条件的情况下创建返回 1 或 0 的方法?

java - 在JSP中的Java方法内将文本打印到网页

java - 如何覆盖<struts :text name ="..."/> (Struts 2 Text jsp tag) to print out the name attribute in an HTML comment?

java - 为什么当我尝试将这个大数字存储在 double 中时,我会在 Java 应用程序中得到这个奇怪的结果?

java - 如何在 Java 中将多个类对象存储在同一个数组中?

java - 如何在 page.redirect 从 servlet 到 jsp 上显示成功消息

javascript - jsp中iframe加载问题