How to handle multiple actions in a single form in Struts 2

10,359

Solution 1

In the struts.xml the action is mapped via the action tag

<action name="userAction" class="...

the submit buttons should include method attribute to call corresponding methods of the action

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

Note: To map a method attribute you should have DMI turned on.

Solution 2

In order to use method attribute of the <s:submit> tag DynamicMethodInvocation must be enabled. Another solution is to use action attribute.

In 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>

In struts.xml:

<action name="print" class="...">
  <result>...</result>
</action>
<action name="export" class="...">
  <result>...</result>
</action>
<action name="save" class="...">
  <result>...</result>
</action>
Share:
10,359
gmeka
Author by

gmeka

Updated on June 08, 2022

Comments

  • gmeka
    gmeka almost 2 years

    I have a form contains three buttons print/export/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>
    

    How can I map this in struts.xml?