Bir jsp dosyasında formum var. İki gönderme düğmesi vardır: "Arama" ve "Yeni Ekle" düğmesi. Struts Eylem sınıfta struts.xml
Gönderme düğmesi nasıl algılanır, tek bir Action sınıfında birden çok gönderme düğmesinin senaryosunda tıklanır?
<?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>
yılında
<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>
, biz http isteği işlenirken, yani execute()
yöntemdir tek yöntem olduğunu biliyoruz. Ben Arama butonuna tıklandığında benim beklenen durumunda,
, verileri arama gerçekleştirmek ve ben , bu /example/add.jsp
sayfayı yönlendirme gerçekleştirecek Yeni düğme ekleyin tıklandığında /example/search.jsp
, veri verecek. Ancak, tıklandığında her iki düğme de execute() yöntemine girecektir. Bu yüzden, execute()
yönteminde hangi düğmeyi tıkladığımı bilmem gerekiyor.
senaryo Sen struts.xml
dosyasında iki eylemleri tanımlamak ve farklı eylemler http://struts.apache.org/docs/submit.html boyun amacıyla <s:submit>
etiketinin action
özelliğini kullanabilirsiniz bu
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";
}
}
Bkz. Http://struts.apache.org/2.x/docs/multiple-submit-buttons.html. –
evet .... anladım ... –
@AleksandrM: Daha ayrıntılı cevaplar verebilir misiniz? Struts.xml eşlemesinin nasıl göründüğü gibi. Birden fazla gönderim düğmesinin makalesi hakkında, aslında bunu okudum :). Birincisi (boolean sahne kullanarak) ümit vericidir, fakat bir şekilde işe yaramadı, düğmenin dize etiketinin boole denetleyicisi tarafından boolean'a dönüştürülemeyeceği, büyük olasılıkla eski sürümlerde çalışmak için kullanıldığı anlaşılıyor (struts 2.3 kullanıyorum) . İkincisi, buton etiketi ile sıkı bağlantı nedeniyle iyi değil. –
null