2011-11-22 13 views
10

में एक टैग विशेषता के रूप में एक enum मान पास करना मेरे पास एक कस्टम जेएसपी टैग है जो एक पैरामीटर का उपयोग कर रहा है जो एक enum है। यह दृष्टिकोण अन्य वर्गों का उपयोग करने का एक परिणाम है, जिन्हें इस गणना की आवश्यकता है। बिंदु मैं कोई सुराग नहीं कैसे ईएल में एक enum मान देना है:जेएसपी

<mytaglib:mytag enumParam="${now what do I type here?}" /> 

केवल वैकल्पिक हल मैं तो पाया जो दूर enumParam एक पूर्णांक बनाने के लिए और यह वांछित मूल्यों को बदलने के लिए किया गया था:

<mytaglib:mytag enumParam="3" /> 

मेरा मानना ​​है कि ऐसा करने का एक बेहतर तरीका होना चाहिए। कृपया मदद करे।

उत्तर

12

ईएल Enums के उपयोग की अनुमति देता है!

तीन तरीके या तो एक rvalue या lvalue अभिव्यक्ति का उपयोग कर एक टैग विशेषता मान सेट करने हैं:
[..]

केवल पाठ के साथ:

< कुछ: टैग मान = "sometext "/ >

इस अभिव्यक्ति को शाब्दिक अभिव्यक्ति कहा जाता है। इस मामले में, विशेषता का स्ट्रिंग मान विशेषता के अपेक्षित प्रकार के लिए मजबूर होता है। शाब्दिक मूल्य अभिव्यक्तियों में विशेष वाक्यविन्यास नियम होते हैं। अधिक जानकारी के लिए शाब्दिक अभिव्यक्तियां देखें। जब एक टैग विशेषता में एक enum प्रकार होता है, तो अभिव्यक्ति का उपयोग अभिव्यक्ति एक शाब्दिक अभिव्यक्ति होना चाहिए। उदाहरण के लिए, टैग विशेषता सूट.हार्ट्स का अर्थ "दिल" अभिव्यक्ति का उपयोग कर सकती है। शाब्दिक को सूट के लिए मजबूर किया जाता है और विशेषता को मूल्य सूट मिलता है।

http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html

Enum:

public Enum Color{ 
    RED, BLUE, GREEN 
} 

JSP/टैग फ़ाइल

<mytaglib:mytag enumParam="${'RED'}" /> 

बिलाव 7.0.22 के साथ ही घाट 6.1.26 के साथ परीक्षण किया गया।

+0

टॉमकैट 6.0 पर काम करने के लिए भी परीक्षण किया गया। – Bass

-1

ईएल एनम्स तक पहुंचने का समर्थन नहीं करता है। आपको तारों का उपयोग करने पर विचार करना चाहिए।

उदाहरण: यदि आपका कस्टम टैग में

<mytaglib:mytag enumParam="RED" /> 
OR 
<mytaglib:mytag enumParam="${obj.color}" /> 

आप इस तरह enum मूल्य प्राप्त:

public Enum Color{ 
    READ, BLUE, GREEN 
} 

आप नीचे दिए गए की तरह अपने कस्टम टैग करने के लिए स्ट्रिंग पारित कर सकते हैं

Color.valueOf("RED"); 
+2

devpg की टिप्पणी में यह दिखाता है कि enums समर्थित हैं। और मैं यह भी पुष्टि कर सकता हूं कि उसका समाधान काम करता है। –

+0

पीटर के साथ सहमत हुए। यह सही नहीं है। आपके उदाहरण में, 'enumParam = "$ {' BLUE '}" 'ठीक काम करेगा। – dgrundel