Java Struts操作中的多个入口点(迁移Struts 2.2.3->;2.3.1)
我在Java Struts操作中的多个入口点(迁移Struts 2.2.3->;2.3.1),java,jsp,struts2,dmi,Java,Jsp,Struts2,Dmi,我在struts.xml中有一个操作: 重印 /x ${errorFlag} ${message} /jsp/reprintOverview.jsp JSP: 具有多个表单元素,所有元素都绑定到一个操作。 每个表单都有一个单独的提交按钮,带有不同的方法(例如“shopPdfReprint”)。 每个方法都映射到相应类中的一个方法 Struts 2.2.3的一切都很好。但是在迁移到2.3.1之后,方法映射不起作用。只调用类的execute()方法,而不是调用相应的方法(例如“shopPdf
struts.xml
中有一个操作:
重印
/x
${errorFlag}
${message}
/jsp/reprintOverview.jsp
JSP:
具有多个表单元素,所有元素都绑定到一个操作。
每个表单都有一个单独的提交按钮,带有不同的方法(例如“shopPdfReprint”
)。
每个方法
都映射到相应类中的一个方法
Struts 2.2.3的一切都很好。但是在迁移到2.3.1之后,方法映射不起作用。只调用类的execute()
方法,而不是调用相应的方法(例如“shopPdfReprint”
)
我查看了文档,但不幸的是没有找到任何线索,即如何适应2.3.1
有人遇到过这种情况吗?发生这种情况是因为您已关机。方法
属性与以前一样使用submit标记,即使在重新提交安全修复之后也是如此。使用常量启用DMI
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
如果它不起作用,请告诉我。如果有人正在移动或使用Struts 2.5,那么他们不必使用Struts.xml映射操作。
Strtus 2.5是基于注释的,因此在操作类开发人员可以使用注释在单个类中映射多个操作
从旧struts版本到struts 2.5版本,此链接可能会有所帮助
下面是简单的演示代码
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";
}
}
很多坦克!不幸的是,我只能明天再试试。我会立即给你反馈。我没有改变配置。我想知道,你提到“关闭DMI”。是否有不同的默认行为?默认情况下,DMI处于启用状态,允许在URL中使用特殊语法来执行方法,而不是映射到该URL,提交标记使用它。是的!非常感谢你!工作起来很有魅力。在你给我暗示之后,我进一步寻找这个问题。看起来,出于安全原因,DMI在默认情况下是关闭的。如果我们没有在Spring MVC的长期迁移过程中,我现在考虑切换。