Java Struts 2表单标签中的多个提交按钮

Java Struts 2表单标签中的多个提交按钮,java,forms,jsp,struts2,action,Java,Forms,Jsp,Struts2,Action,我试图将表单标记中的按钮指向与表单不同的action/action类,但它不起作用。我在另一个线程中读到,这是由于Struts 2中的一个bug造成的,应该设置Struts.mapper.action.prefix.enabled“=“true”,所以我这样做了,但仍然是一样的 我可以使用不同的操作,指向表单正在使用的同一操作类的不同方法,但当我尝试指定不同的操作类时,它不起作用 这很有效 (jsp) (行动) 但是如果我将struts.xml中的“取消”操作映射更改为 <action n

我试图将表单标记中的按钮指向与表单不同的action/action类,但它不起作用。我在另一个线程中读到,这是由于Struts 2中的一个bug造成的,应该设置
Struts.mapper.action.prefix.enabled“=“true”
,所以我这样做了,但仍然是一样的

我可以使用不同的操作,指向表单正在使用的同一操作类的不同方法,但当我尝试指定不同的操作类时,它不起作用

这很有效

(jsp)

(行动)

但是如果我将
struts.xml
中的“取消”操作映射更改为

<action name="cancel" class="...CancelFormAction" method="perform" > 
    <result name="CANCEL" type="redirectAction">trnsfr</result>
</action>

trnsfr
没有


这正常吗?是否可以从已经映射到一个动作类的表单中映射到另一个动作类?

这是正常的,因为您只能将表单映射到表单标记的动作属性指定的一个动作(历史上是HTML格式的).Submit按钮不会更改该映射,而是会调整动作映射器以使用不同的动作,因为前缀已启用。因此,如果需要更改此行为,可以动态更改表单映射或更改默认动作映射器等。但是,如果动作实例已创建,则会出现问题。因此,您应该se默认的动作映射器。但是您的帖子中有一个输入错误
struts.mapper.action.prefix.enabled“=“true”
。启用提交按钮操作的常量为

<constant name="struts.mapper.action.prefix.enabled" value="true"/>

您需要设置
struts.mapper.action.prefix.enabled
,这并不是因为bug,而是因为它决定了S2中的工作方式。向你的其他动作类展示你可能有一些错误。控制台中是否也存在任何错误?
public class PrintItem extends BaseAction {

    @Override
    public String perform() throws Exception {

        doPrintLogic();
        return SUCCESS;

    }

    public String cancel(){

        return "CANCEL";

    }
}
<action name="cancel" class="...CancelFormAction" method="perform" > 
    <result name="CANCEL" type="redirectAction">trnsfr</result>
</action>
<constant name="struts.mapper.action.prefix.enabled" value="true"/>
struts.mapper.action.prefix.enabled=true