Comment détecter le bouton soumettre cliqué dans plusieurs boutons de soumission scénario dans une seule classe d'Action?

J'ai un formulaire dans une page jsp. Il y a deux boutons submit: "Recherche" et "Ajouter un Nouveau" bouton.

<s:form name="searchForm" action="employeeAction" method="post">
    <s:textfield name="id" label="Employee ID"/>
    <s:textfield name="name" label="Employee Name"/>

    <s:submit value="Search"/>
    <s:submit value="Add New"/>
</s:form>

Dans struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

    </package>

    <package name="example" namespace="/example" extends="default">

        <action name="employeeAction" class="example.EmployeeAction">
           <result name="search">/example/search.jsp</result>
           <result name="add" type="redirect">/example/add.jsp</result>
        </action>

    </package>
</struts>

Dans Struts classe d'Action, nous savons qu'il existe une seule méthode de traitement de la requête http, c'est-à execute() méthode.

Dans mon cas attendus, quand j'ai cliqué de Recherche bouton, il va effectuer la recherche de données et de restituer les données à /example/search.jsp, quand j'ai cliqué Ajouter de Nouveaux bouton, il va effectuer la redirection de la page de /example/add.jsp. Cependant, les deux boutons lorsque l'utilisateur clique dessus va aller dans la méthode execute (). J'ai donc besoin de savoir comment détecter le bouton cliqué dans la execute() méthode.

Le scénario ressemble à ceci

public class EmployeeAction extends ActionSupport {

    public String execute() throws Exception {

        //PSEUDOCODE
        //IF (submitButton is searchButton) 
        //   return doSearch();
        //ELSE IF (submitButton is addNewButton) 
        //   return doAddNew();

        return SUCCESS;
    }

    public String doSearch() throws Exception {
        //perform search logic here
        return "search";
    }

    public String doAddNew() throws Exception {
        return "add";
    }
}
InformationsquelleAutor null | 2012-11-12