2011-01-13 12 views
7

में एक चयन बॉक्स में एक कणिका विशेषता को प्रदर्शित करने के लिए कैसे मैं वर्तमान में स्प्रिंग-रू और स्प्रिंग-एमवीसी में खुद को प्राप्त कर रहा हूं। मेरे पास एक साधारण सरल एप्लीकेशन है जो रू मेरे लिए उत्पन्न हुआ। इसमें दो इकाइयां, रिकॉर्ड और कार शामिल हैं, जहां रिकॉर्ड में एक कण कार का संदर्भ होता है।आरओओ-जेनरेटेड एप्लिकेशन

प्रारंभिक सेटअप के बाद मैं फ़ील्ड का उपयोग करने के लिए विचारों में से एक को बदलता हूं: उपलब्ध कारों का चयन करने के लिए एक combobox चुनें और उन्हें रिकॉर्ड में जोड़ें।

<field:select field="car" id="c_de_recordcars_domain_Record_car" items="${cars}" path="/cars" /> 

यह टैग मुझे सिरदर्द देता है। अब तक, comboxbox सभी उपलब्ध कारों को प्रदर्शित करता है ... लेकिन यह सभी विशेषताओं को प्रदर्शित करके ऐसा करता है (जैसे "कार 1 मंगल 18 00:00:00 सीईटी 2011 Friver1")। मैं चाहता हूं कि combobox केवल नाम-विशेषता ("कार 1") दिखाता है।

टैग के भीतर, केवल "itemValue" -Attribute है, लेकिन यह केवल अनुरोध-param में डाल दिया गया मान प्रस्तुत करता है ... मुझे "displayValue" जैसी कुछ चाहिए जहां मैं जावा-फील्ड को इंगित कर सकता हूं इसका उपयोग करने के लिए प्रयोग किया जाता है।

मैं इसे कैसे प्राप्त कर सकता हूं? धन्यवाद

उत्तर

8

स्प्रिंग रू (वसंत MVC कार्यक्षमता का उपयोग) उपयोग आवेदन रूपांतरण सेवा प्रदान करता है। आपको ApplicationConversionServiceFactoryBean के अंदर विधि Converter<Car, String> getCarConverter() लागू करना चाहिए।

विवरण के लिए reference देखें।

0

आप इकाई Car में toString विधि जोड़ने की कोशिश कर सकते हैं, जिसमें वापसी Car के नाम क्षेत्र। और सभी विकल्प सामग्री में path:/src/main/webapp/WEB-INF/tags/form/fields/select.tag एक्स अद्यतन इस प्रोफाइल की पुष्टि:

<option value="${item}"> 
    <spring:eval expression="item" /> 
</option> 

रहे हैं:

<option value="${item}"> 
    ${item} 
</option> 
2

स्प्रिंग रू 1.1.4 और बाद के संस्करण के लिए:

  1. पढ़ें ApplicationConversionServiceFactoryBean.java ध्यान से

  2. पढ़ें ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj ध्यान से आप एक स्थिर भीतरी वर्ग CarConverter यहाँ खोजना चाहिए। यह बहुत लंबा उपसर्ग होना चाहिए। आपको एक लंबे उपसर्ग के साथ यहां एक installLabelConverters विधि मिलनी चाहिए।

  3. कोड कारकॉन्टर को 2 से 1 तक कॉपी करें, लंबे उपसर्ग को हटा दें। कन्वर्ट() विधि के अंदर कोड को बदलें, जैसा आप चाहें।

  4. कॉपी 1.

  5. 2 से संबंधित आयात बयान की प्रतिलिपि 2 से 1 करने के लिए कोड installLabelConverters विधि, लंबे उपसर्ग को हटा दें।

  6. अब फ़ाइल 1.

  7. प्रारंभ रू बचाने के लिए, यह .aj फ़ाइल अपडेट करने दें।

  8. संकलन और इसे चलाने के लिए "mvn tomcat: run" का उपयोग करें।

11

:) बस पूरे रविवार को एक ही समस्या से जूझ रहे थे। बस आइटम लेबल = "कार वर्ग से आपका फ़ील्ड नाम" जोड़ें।

<field:select field="car" 
       id="c_de_recordcars_domain_Record_car" 
       items="${cars}" 
      **itemLabel="CarName"** 
       itemValue="id" 
       path="/cars" /> 
+1

यह कन्वर्टर्स के साथ गड़बड़ करने की तुलना में बहुत साफ दिखता है। यदि आप एक क्षेत्र से कुछ अधिक जटिल वापस करना चाहते हैं तो आप अपनी खुद की गेटर विधि भी बना सकते हैं। –

+0

इस तरह आप केवल एक लेबल पोस्ट कर सकते हैं कि एक से कई के लिए पर्याप्त नहीं है –

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