Struts Action中的多个入口点(迁移Struts2.2.3->2.3.1)
题
我在struts中有一个动作。xml
<action name="reprint" class="reprintAction">
<result name="success" type="redirectAction">
<param name="actionName">reprint</param>
<param name="namespace">/x</param>
<param name="errorFlag">${errorFlag}</param>
<param name="message">${message}</param>
</result>
<result name="view">/jsp/reprintOverview.jsp</result>
</action>
一个JSP:
<s:form action="reprint">
<s:select name="selectedPdfPrinter" list="shopPdfPrinterList" listKey="deviceId" listValue="deviceId" theme="simple"/>
<s:submit value="Print" theme="simple" method="shopPdfReprint"/>
</s:form>
有几个表单元素,都绑定到一个动作。每个表单都有一个独特的提交按钮 method
(例如"shopPdfReprint")。每个 method
被映射到相应类中的方法。
一切工作正常与Struts2.2.3。但是在迁移到2.3.1之后,方法映射不起作用。而是调用相应的方法(例如"shopPdfReprint"),只有 execute
-类的方法被调用。
我已经看了文档,但不幸的是没有找到线索,如何适应2.3.1 有人碰到这个吗?帮助表示赞赏:]
解决方案
发生这种情况是因为您已关闭DMI。该 method
即使在重新发送安全修复后,属性也可以像以前一样使用submit标签。使用常量启用DMI
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
如果没用就告诉我。
其他提示
如果有人正在移动或工作Struts2.5,那么他们不必使用struts映射操作。xml。Strtus2.5是基于注释的,因此在动作类中,开发人员可以使用注释在单个类中映射多个动作。
可能这个链接从旧的struts版本到struts2.5版本有帮助。
https://struts.apache.org/docs/struts-23-to-25-migration.html
以下是简单的演示代码。
package com.stsh.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
import com.stsh.intercepter.AuthRequired;
@ParentPackage(value="default")
@Namespace(value="/dashboard")
public class DashboardAction extends ActionSupport implements AuthRequired{
private static final long serialVersionUID = 1L;
@Action(value = "home", results = { @Result(name = "success", location = "dashboard.tiles", type = "tiles") })
public String dashboard(){
return "success";
}
}
不隶属于 StackOverflow