Java Struts2.5-相同形式的多个动作
我想以相同的形式调用不同的操作。在我以前开发的一个应用程序中,它工作得很好(见下面的代码),但现在我已经将Struts的版本从2.1.6切换到了2.5.8,它不工作了 在对的回答中,不鼓励以相同的形式使用不同的操作。相反,作者建议在同一个动作中调用不同的方法。这很好,但在我的应用程序中,我需要从多个位置调用这些操作/方法,而不仅仅是这个表单,因此我更愿意在struts.xml文件中分离这些操作调用 注意:我从struts.xml的角度调用“action”。每个操作都从同一个类*action.java调用不同的方法。java类的所有操作都分组在struts.xml的同一个包中 list.jsp中的表单:Java Struts2.5-相同形式的多个动作,java,forms,jsp,struts2,action,Java,Forms,Jsp,Struts2,Action,我想以相同的形式调用不同的操作。在我以前开发的一个应用程序中,它工作得很好(见下面的代码),但现在我已经将Struts的版本从2.1.6切换到了2.5.8,它不工作了 在对的回答中,不鼓励以相同的形式使用不同的操作。相反,作者建议在同一个动作中调用不同的方法。这很好,但在我的应用程序中,我需要从多个位置调用这些操作/方法,而不仅仅是这个表单,因此我更愿意在struts.xml文件中分离这些操作调用 注意:我从struts.xml的角度调用“action”。每个操作都从同一个类*action.ja
public class ObjectAction extends BaseActionCRUD implements ModelDriven<ObjectDTO> {
...
public String showMore() {
...
return SUCCESS;
}
public String edit() {
...
return SUCCESS;
}
public String delete() {
...
return SUCCESS;
}
public String list() {
...
return SUCCESS;
}
...
}
jsp是一个对象列表。当我单击一行时,会出现一个包含多个选项的菜单(表单中的选项)。所需对象的id收集在变量idSelectedRow中
struts.xml
错误
错误登录
列表对象
列表
列表对象
肖莫尔
编辑
列表
.
.
.
Object.java:
public class ObjectAction extends BaseActionCRUD implements ModelDriven<ObjectDTO> {
...
public String showMore() {
...
return SUCCESS;
}
public String edit() {
...
return SUCCESS;
}
public String delete() {
...
return SUCCESS;
}
public String list() {
...
return SUCCESS;
}
...
}
公共类ObjectAction扩展BaseActionCRUD实现模型驱动{
...
公共字符串showMore(){
...
回归成功;
}
公共字符串编辑(){
...
回归成功;
}
公共字符串删除(){
...
回归成功;
}
公共字符串列表(){
...
回归成功;
}
...
}
那么,如何在Struts 2.5.8中实现同样的功能呢
现在,ObjectAction.java中执行的方法始终是list(),而不是所选的方法。这是因为重定向到list.jsp的操作是list
谢谢
2.5.10.1
,而不是2.5.82.5.10.1
之前的任何2.5版本(以及2.3.32
之前的任何最新2.3版本)都容易受到严重安全问题的攻击2.3.15.3
,您需要在struts.xml中显式启用操作:
前缀(由
标记中的操作=”
属性生成),并使用:
method=”“
前缀,称为DMI(动态方法调用),在您链接的2011年的答案中建议使用,现在已被弃用,完全不鼓励使用另外,
操作:
前缀方法不鼓励使用更健壮的解决方案(例如,根据按下的
按钮,使用Javascript更改
的目标),但是,如果需要,您仍然可以启用并使用它,这没有什么大问题。+1并同意@Andrea Ligios的观点。即便如此,仅仅因为Struts允许您将多个操作映射到同一个类,并不意味着您应该这样做。相反,考虑重构你的行为,这样每个人都有一个责任。这将减少耦合,提高动作类的内聚性,简化配置和单元测试,并减少缺陷。我已经考虑过Javascript解决方案,但我不想让事情复杂化。不过,我会考虑的。谢谢你的版本警告。你是我的英雄!不客气,马多:)@MichaelPeacock相关:(和)