冲突;行动“;struts2中的属性

冲突;行动“;struts2中的属性,struts2,struts,Struts2,Struts,我已经尝试将动作信息(如保存或编辑)从我的struts2动作类(CommonAction.java)传递到jsp文件(test.jsp) 在action类中,我使用下面的代码设置action值 request.setAttribute("action","Save"); 当我试图在jsp文件中获取action属性时 String actionValue = (String)request.getAttribute("action"); 我在jsp文件中得到的是action类而不是action

我已经尝试将动作信息(如保存或编辑)从我的struts2动作类(CommonAction.java)传递到jsp文件(test.jsp)

在action类中,我使用下面的代码设置action值

request.setAttribute("action","Save");
当我试图在jsp文件中获取action属性时

String actionValue = (String)request.getAttribute("action");
我在jsp文件中得到的是action类而不是action值

String actionValue = (String)request.getAttribute("action");
下面是异常跟踪

java.lang.ClassCastException: com.actions.CommonAction cannot be cast to java.lang.String
at org.apache.jsp.jsp.common.test_jsp._jspService(test_jsp.java:119)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)

有没有办法在不更改属性名称的情况下获取操作值?

在jsp页面中使用
${requestScope.action}
。如果返回错误的值,则在您的操作中声明一个getter方法(
公共字符串getAction()
),并使用previus EL代码获取结果

action value: ${requestScope.action}

此功能由
StrutsRequestWrapper
提供。它重写
getAttribute()
方法,以支持在OGNL值堆栈中搜索属性。您可以通过在struts.xml中设置以下内容来禁用该功能:

<constant name="struts.disableRequestAttributeValueStackLookup" value="true"/>

谢谢,它在Struts 2.3.15中运行良好,之前我使用的是2.3.12。为什么要这样做?