Java 如何在Struts 2中以单个表单处理多个操作

Java 如何在Struts 2中以单个表单处理多个操作,java,jsp,struts2,ognl,dmi,Java,Jsp,Struts2,Ognl,Dmi,我有一个表单包含三个按钮打印/导出/保存 <s:form action="/userAction"> <s:submit type="image" value="%{'print'}" src="/print.png" /> <s:submit type="image" value="%{'export'}" src="/export.png" /> <s:submit type="image" value="%{'save'}"

我有一个表单包含三个按钮
打印
/
导出
/
保存

<s:form action="/userAction">
    <s:submit type="image" value="%{'print'}" src="/print.png" />
    <s:submit type="image" value="%{'export'}" src="/export.png" />
    <s:submit type="image" value="%{'save'}" src="/save.png" />
</s:form>


如何在
struts.xml
中映射此操作?

struts.xml
中,通过


已打开。

要使用
标签的
方法属性
动态方法职业
必须启用。另一种解决方案是使用
action
属性

在JSP中:

<s:form action="save">
    <s:submit type="image" value="%{'print'}" src="/print.png" action="print" />
    <s:submit type="image" value="%{'export'}" src="/export.png" action="export" />
    <s:submit type="image" value="%{'save'}" src="/save.png" />
</s:form>

在struts.xml中:

<action name="print" class="...">
  <result>...</result>
</action>
<action name="export" class="...">
  <result>...</result>
</action>
<action name="save" class="...">
  <result>...</result>
</action>

...
...
...

如果愿意,也可以在xml上使用动作注释。action类可以通过动态方法调用以两种方式公开其方法:我只是喜欢执行不同的操作,只使用s:submit按钮的名称空间和操作属性。@Roman C:所以我必须使用相同的name=“userAction”和不同的方法编写三个标记。在这种情况下,所有方法都返回成功。struts如何知道响应来自save()或export()?当映射一个动作时,会有一个结果。如果您使用DMI(动态方法调用),那么将应用操作的映射(将使用该结果),但您使用的是不同于execute的方法。如果您希望每个方法有不同的结果,那么应该将该方法映射为操作。一个action类可以支持多个action,您只需要用xml或注释定义它们。@javabie如果您配置
Struts文档: