Mam formularz w jsp. Dostępne są dwa przyciski przesyłania: przycisk "Szukaj" i "Dodaj nowy".Jak wykrywać przycisk przesyłania kliknięty w scenariuszu z kilkoma przyciskami przesyłania w pojedynczej klasie działania?
<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>
W 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>
w klasie Struts działania, wiemy, że istnieje tylko jeden sposób, który przetwarza żądania http, czyli execute()
metoda.
W moim przypadku spodziewanej, kiedy kliknąłem Szukaj przycisk, wykona wyszukiwania danych i renderować dane /example/search.jsp
, kiedy kliknąłem Dodaj nowy przycisk, wykona przekierowanie stronę /example/add.jsp
. Jednak oba przyciski po kliknięciu przejdą do metody execute(). Muszę wiedzieć, jak wykryć, który przycisk kliknął w metodzie execute()
.
scenariusz wygląda tak
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";
}
}
Zobacz http://struts.apache.org/2.x/docs/multiple-submit-buttons.html. –
tak .... mam to ... –
@AleksandrM: czy mógłbyś podać bardziej szczegółowe odpowiedzi? Podobnie jak wygląda mapowanie struts.xml. O artykule z wieloma przyciskami przesyłania przeczytałem, że faktycznie :). Pierwsza (przy użyciu boolowskich rekwizytów) jest obiecująca, ale jakoś nie zadziałała, wygląda na to, że etykieta łańcuchowa przycisku nie może zostać zamieniona na boolowskie za pomocą kontrolera podpórek, prawdopodobnie jest używana do pracy w starszych wersjach (używam rozpórek 2.3) . Drugi nie jest dobry, ze względu na ścisłe połączenie z etykietą przycisków. –
null