2008-10-02 20 views
30

एक चुनिंदा ड्रॉपडाउन है और मैं सूची में "कोई चयन नहीं" आइटम जोड़ना चाहता हूं, जिसमें सबमिट किए जाने पर मुझे 'शून्य' देना चाहिए। मैं SimpleFormController व्युत्पन्न नियंत्रक का उपयोग कर रहा हूँ।स्प्रिंग एमवीसी फॉर्म टैग: क्या "कोई चयन नहीं" आइटम जोड़ने का कोई मानक तरीका है?

protected Map referenceData(HttpServletRequest httpServletRequest, Object o, Errors errors) throws Exception { 
    Map<String, Object> map = new HashMap<String, Object>(); 

    map.put("countryList", Arrays.asList(Country.values())); 

    return map; 
} 

और jspx हिस्सा

<form:select path="country" items="${countryList}" title="country"/> 

एक संभव समाधान सूची की शुरुआत करने के लिए एक अशक्त मूल्य जोड़ने और फिर के रूप में इस 'अशक्त' disply करने के लिए 'एक कस्टम PropertyEditor का उपयोग करने में हो रहा है है कोई चयन नहीं'। क्या कोई बेहतर समाधान है?

@Edit: मैं एक कस्टम सत्यापन एनोटेशन जो की जाँच करता है, तो चयनित मान "कोई चयन" है के साथ इस समाधान कर लिया है। क्या कोई और मानक और आसान समाधान है?

उत्तर

36

एक विकल्प:

<form:select path="country" title="country" > 
    <form:option value="">&nbsp;</form:option> 
    <form:options items="${countryList}" /> 
</form:select> 
+0

(यह हाल ही में, मेरे लिए त्रुटि दिखाते है यह बताते हुए कि इकाई से परिभाषित नहीं है, या कुछ इस तरह) jspx पन्नों में वर्णित निकाय को ''   उपयोग करने के साथ से सावधान रहें। यह कोड के द्वारा गैर-ब्रेकिंग स्पेस को संदर्भित करना अधिक सुरक्षित लगता है: ' ' – Michael

+1

इस प्रकार NoSelection एक खाली स्ट्रिंग पोस्ट करेगा, न कि 'शून्य'। मूल्य = $ {शून्य} शून्य पोस्ट करना चाहिए। – javabot

0

मुझे नहीं लगता कि आप इस के लिए एक संपत्ति संपादक की जरूरत है चाहिए। यदि सूची में "रिक्त" विकल्प सबसे पहले है, और सूची को आउटपुट करने वाले टैग में से कोई भी चयनित के रूप में चिह्नित नहीं होता है, तो ब्राउज़र को पहले, "रिक्त" स्वचालित रूप से चुनना चाहिए।

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