2009-02-13 16 views
11

प्रदर्शित करने के लिए स्प्रिंग विकल्प टैग का उपयोग करें मैं एक HTML फॉर्म के लिए वसंत का उपयोग कर रहा हूं। फ़ील्ड में से एक enum है और इस प्रकार मुझे एक HTML ड्रॉप-डाउन सूची (<option> टैग) चाहिए। मेरा enum का नाम toString() मान से अलग है। उदाहरण के लिए:एनम के टूस्ट्रिंग मान

public enum Size { 
    SMALL("Small"), LARGE("Large"), VERY_LARGE("Very large"); 

    private final String displayName; 

    private Size(String displayName) { 
     this.displayName = displayName; 
    } 

    public String toString() { 
     return displayName; 
    } 
} 

मैं चाहता हूं कि उपयोगकर्ता toString() मान देखें। आम तौर पर यह वसंत विकल्प टैग के itemLabel का उपयोग करके पूरा किया जाता है।

<form:options items="${enumValues}" itemLabel="beanProperty" /> 

लेकिन toString() एक सेम संपत्ति के रूप में यह "मिल" के साथ शुरू नहीं करता है नहीं है। क्या गेटर बनाने के बिना स्ट्रिंग के मूल्य का उपयोग करने के लिए itemLabel सेट करने का कोई तरीका है?

उत्तर

6

मुझे पता है कि यह कुछ साल पुराना है और अब तक हल किया जाना चाहिए, लेकिन सोचा कि मैं भविष्य के काम करने वालों के लिए समाधान जोड़ूंगा।

बस [itemLabel = "beanProperty"] भाग को हटा दें। यह मूल्यों को मुद्रित करने के लिए toString का उपयोग करेगा।

+4

कभी भी देर नहीं हुई: http://xkcd.com/979/ –

+0

यह 3.0 में काम करता था, लेकिन 3.1 के बाद से तोड़ दिया गया है, https://jira.spring.io/browse/SPR-9214 और https://jira.spring.io/browse/SPR-10281 –

2

क्यों नहीं अपने सार्वजनिक में सार्वजनिक getDisplayName() विधि जोड़ें?

+0

मैं प्रत्येक enum को यह अतिरिक्त विधि जोड़ने से बचने की कोशिश कर रहा हूं। यह मदद नहीं करता है कि enum विस्तारित नहीं किया जा सकता है। –

1

क्या आपने अपनी जगहों को एक स्थान से बढ़ाने के लिए स्प्रिंग के शक्तिशाली एओपी मॉडल का उपयोग करने का प्रयास किया है? ऐसा लगता है कि, आपके पास कितने enums है, आप आसानी से getDisplayName() विधि जोड़ सकते हैं जो उन सभी को आसानी से toString() मान देता है।

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