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:
Çok teşekkür ederim .... Deneyelim ... – Nageswaran
Gerçekten iyi bir rehberlik sizin tarafınızdan verilmiş - +1 – Naved
Wow. Tam olarak ihtiyacım olan şey. Çok teşekkürler! – ykombinator