एक सामान्य सामान्य उपयोग केस होता है जहां जावा ऑब्जेक्ट्स की एक सूची होती है, जिससे चयन वेब फॉर्म पर किया जा सकता है - आमतौर पर आप प्राथमिक कुंजी का उपयोग करेंगे ऑब्जेक्ट के रूप में ऑब्जेक्ट करें ताकि नियंत्रक या तो लुकअप कर सके, या जो भी ऑब्जेक्ट बनाया/अपडेट किया गया हो, उस कुंजी को बस बांधें।स्प्रिंग एमवीसी - ऑब्जेक्ट चयन ड्रॉप डाउन - कोई प्राथमिक पहचानकर्ता
मेरी समस्या यह है कि चुनने की सूची लगातार, कुंजी वाली वस्तुएं नहीं होती है, वे एक ऐसे सेवा से व्यवसाय मॉडल हैं जिनके पास निहित डेटा के आधार पर उन्हें पुनर्प्राप्त करने का कोई उचित तरीका नहीं है। नीचे कुछ psuedo कोड है जहां पृष्ठ पर फू की एक सूची दी गई है, और हम आसानी से नियंत्रक को संवाद कर सकते हैं कि Foo का नाम सबमिट करें, लेकिन अगर फू के अन्य फ़ील्ड सबमिट किए जाने की आवश्यकता है तो क्या होगा?
नियंत्रक:
referenceData() {
...
List foos = fooService.getFoosForBar(bar)
return { 'foos', foos }
}
jsp:
<form>
...
<spring:bind path="formData.foo">
<select name="<c:out value="${status.expression}" />">
<c:forEach items="${foos}" var="foo">
<option value="<c:out value="${foo.name}"/>">
<c:out value="${foo.name}"/>
</option>
</c:forEach>
</select>
</spring:bind>
...
</form>
कुछ उदाहरण समाधान फू की अन्य संपत्तियों सबमिट करें और उन्हें चयन के रूप में सिंक में रखने के लिए छिपा क्षेत्रों का उपयोग किया जाएगा बदल गया है, लेकिन मैं पसंद करते हैं ऐसी स्थिति में जावास्क्रिप्ट का उपयोग न करें जहां यह संभवतः भ्रम जोड़ देगा। निश्चित रूप से इसे पूरा करने के अन्य तरीके भी हैं।
मेरा प्रश्न यह है कि इसे पूरा करने के लिए कोई मानक अभ्यास मौजूद है? या मुझे बस ऐसा करने के अपने तरीके से आना चाहिए? यदि संभव हो तो मैं पहियों को पुन: आविष्कार नहीं करना चाहूंगा, और यह इतना आम बात है कि यह सिर्फ विंग करने का सबसे अच्छा तरीका नहीं हो सकता है।
मैंने स्ट्रिंग से प्रतिनिधि ऑब्जेक्ट में जाने के लिए नियंत्रक में एक कस्टम बाइंडर पंजीकृत करके इस दृष्टिकोण का उपयोग किया है (जो केंद्रीकृत है कोड जो dwb सुझाव देता है)। – Nate