2011-09-12 23 views
5

yılında Gönder düğmesini delete eylem gibiÇoklu bu benim JSP kodu var Struts 1.3

<action path="/delete" name="currentTimeForm" input="/viewall.jsp" type="com.action.DeleteProduct"> 
    <forward name="success" path="/viewall.jsp" /> 
    <forward name="failure" path="/viewall.jsp" /> 
</action> 

, ben edit ve update var. Özellikle, <html:form action="delete"> gibi bir isim verdiysem, ancak update ve edit için dinamik olarak nasıl çalışacağım iyi çalışıyor.

cevap

18

Tek bir formunuz ve birden çok gönderme düğmeniz var. Sorunlar, formun içinde kaç tane buton bulunduğuna bakılmaksızın bir formun sadece bir eyleme gönderilebilmesidir.

Üç çözümler şu anda akla gelen:

1. her şeyi göndermek Sadece tek bir eylem var. Eylem sınıfının içine girdikten sonra, formu göndermek için hangi düğmenin kullanıldığını kontrol edin ve buna göre uygun bir tedavi uygulayın.

2.

if (request.getParameter("delete") != null || request.getParameter("delete.x") != null) { 
    //... delete stuff 
} else if (request.getParameter("edit") != null || request.getParameter("edit.x") != null) { 
    //...edit stuff 
} else if (request.getParameter("update") != null || request.getParameter("update.x") != null) { 
    //... update stuff 
} 
HTML formunun action özelliği formu göndermeden önce JavaScript kullanarak değiştirdiniz: ModifyAction.execute(...) yöntemde
<html:form action="modify"> 
    .. 
    .. 
    <html:submit value="delete"/> 
    <html:submit value="edit" /> 
    <html:sumit value="update" > 
</html:form> 

gibi bir şey var. işleyicisi ile

:

function submitTheForm(theNewAction) { 
    var theForm = ... // get your form here, normally: document.forms[0] 
    theForm.action = theNewAction; 
    theForm.submit(); 
} 

3. (1 noktasına benzer bir Eylem sınıf) bir DispatchAction kullanın ama olmadan Önce ekli tıklama işleyicilerle düz olanlara gönderme düğmeleri değiştirmek DispatchAction tarafından işleme alındığından bu yana hangi düğmenin tıklandığını test etme ihtiyacı.

delete, edit ve update adlı üç yürütme yöntemini sağlamanız yeterlidir. Here is an example that explains how you might do it.

Sonuç olarak: 1 numara için, gerçekten çirkin testlerden hoşlanmıyorum .... 2 numara için, gerçekten JavaScript kullanarak eylem formunda oynamanız gerekmiyor. bu yüzden ben şahsen numarasına gideceğim. String özelliği (örnek: buttonClicked), ActionForm currentTimeForm yılında

ekleyin:

+0

Çok teşekkür ederim .... Deneyelim ... – Nageswaran

+2

Gerçekten iyi bir rehberlik sizin tarafınızdan verilmiş - +1 – Naved

+0

Wow. Tam olarak ihtiyacım olan şey. Çok teşekkürler! – ykombinator

0

şöyle bunu yapmanın başka daha basit bir yolu yoktur.

jsp'de, html: submit etiketlerinin her birinde bu özelliği ekleyin.

Şimdi eylem yürütme yönteminde, bu özelliğin değerini kontrol edin, örn.

if(currentTimeForm.getButtonClicked().equals("delete"){ 
} 
else if((currentTimeForm.getButtonClicked().equals("edit")) 

ve benzeri ...

+0

Bunu bunu yapmanın etkili bir yolu olarak görmüyorum. Örneğin, çift veya üçlü gönderim düğmeleri olan 10 formla, oturum eklemeye veya değişkenler istemekle veya fasulyenize daha fazla değişken eklemeye devam edemezsiniz. –