2011-09-12 25 views
5

में सबमिट बटन मैं अपने JSP में इस कोड है:एकाधिक Struts 1.3

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 
.. 
.. 
<html:form action="update" > 
    .. 
    .. 
    <html:submit value="delete" /> 
    <html:submit value="edit" /> 
    <html:sumit value="update" /> 
</html:form> 

और यह struts-config.xml फ़ाइल में:

<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> 

delete कार्रवाई तरह, मैं edit और update है। यह ठीक काम करता है, अगर मैं <html:form action="delete"> की तरह विशेष रूप से नाम दे लेकिन, यह कैसे गतिशील update और edit के लिए काम करने के लिए?

उत्तर

18

आपके पास एक फॉर्म और एकाधिक सबमिट बटन हैं। समस्या यह है कि एक फॉर्म केवल एक ही क्रिया को सबमिट कर सकता है, इससे कोई फर्क नहीं पड़ता कि फ़ॉर्म के अंदर आपके पास कितने सबमिट बटन हैं।

तीन समाधान अभी दिमाग में आते हैं:

1. सिर्फ एक कार्रवाई जहां सब कुछ प्रस्तुत करना। एक बार एक्शन क्लास के अंदर जांच करें कि फ़ॉर्म जमा करने के लिए किस बटन का इस्तेमाल किया गया था और उसके आधार पर उचित उपचार किया गया था।

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 
} 

2. HTML प्रपत्र की कार्रवाई विशेषता प्रपत्र प्रस्तुत करने से पहले जावास्क्रिप्ट का उपयोग बदल गए हैं:

<html:form action="modify"> 
    .. 
    .. 
    <html:submit value="delete"/> 
    <html:submit value="edit" /> 
    <html:sumit value="update" > 
</html:form> 

ModifyAction.execute(...) विधि में की तरह कुछ है।

हैंडलर के साथ

:

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

3. (1 बात करने के लिए एक कार्रवाई वर्ग समान) एक DispatchAction का प्रयोग करें, लेकिन बिना आप पहले क्लिक संचालकों संलग्न के साथ सादे लोगों के लिए बटन प्रस्तुत बदलने DispatchAction द्वारा इलाज किए जाने के बाद से कौन सा बटन क्लिक किया गया था, इसकी जांच करने की आवश्यकता।

आप केवल तीन निष्पादन विधियों को delete, edit और update नाम से प्रदान करते हैं। Here is an example that explains how you might do it

निष्कर्ष: नंबर 1 के लिए, मुझे वास्तव में उन बदसूरत परीक्षणों को पसंद नहीं है .... नंबर 2 के लिए, मुझे वास्तव में यह तथ्य पसंद नहीं है कि आपको जावास्क्रिप्ट का उपयोग करके एक्शन फॉर्म के साथ खेलना है, तो मैं व्यक्तिगत रूप से नंबर 3 के लिए जाना होगा। ActionForm currentTimeForm में

, जोड़ने के एक स्ट्रिंग संपत्ति (उदाहरण:: buttonClicked)

+0

बहुत बहुत धन्यवाद .... मुझे कोशिश करें ... – Nageswaran

+2

वास्तव में आपके द्वारा दिया गया अच्छा मार्गदर्शन - +1 – Naved

+0

वाह। वास्तव में मुझे क्या चाहिए। बहुत बहुत धन्यवाद! – ykombinator

0

इस प्रकार यह करने के लिए एक और सरल तरीका है।

jsp में, एचटीएमएल में से प्रत्येक में: प्रस्तुत टैग इस संपत्ति जोड़ें।

अब कार्रवाई में अमल विधि बस, इस संपत्ति के मूल्य की जाँच अर्थात्।

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

और इसी तरह ...

+0

मैं इसे करने का प्रभावी तरीका नहीं मानता हूं। उदाहरण के लिए 10 रूपों के साथ जिनके पास डबल या ट्रिपल सबमिशन बटन हैं, आप सत्र जोड़ना या चर का अनुरोध नहीं कर सकते हैं या अपने बीन में अधिक चर जोड़ सकते हैं। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^