2009-07-10 10 views
9

सभी के रूप में जावा 5 enums का उपयोग करना। मुझे वेग टेम्पलेट में जावा 5 एनम का उपयोग करने की आवश्यकता है, ताकि मैंVelocity चर

 
public enum Level{ 
    INFO, ERROR; 
} 

Velocity template: 

#if($var == Level.INFO) 
... 
#else 
... 
#end 

ऐसा कुछ कैसे किया जा सकता है? अग्रिम में धन्यवाद।

+0

आपकी स्थिति के आधार पर .. अन्यथा वास्तव में करें। साथ ही, क्या यह केवल 1 प्रकार या कई अलग-अलग संचालन है। http://stackoverflow.com/questions/859563/java-enums-and-switch-statements-the-default-case सहायक हो सकता है। – bryantsai

उत्तर

3

सुंदर नहीं है, लेकिन एक वर्कअराउंड (मैन्युअल रूप से) एनम स्थिरांक को स्थानांतरित करेगा जो आपको वेग संदर्भ में चाहिए।

request.setAttribute('level_info', Level.INFO); 
request.setAttribute('level_error', Level.ERROR); 

तो आप कह सकते हैं

#if ($var == $level_info) 

शायद आसान: बस toString() विधि इसका इस्तेमाल करने की बेहतर होगा करने के बजाय अपने enum उदाहरण के toString() का उपयोग

#if ("$var" == 'INFO') 
+0

बस सोच रहा है, क्या यह वाकई अलग है? – bryantsai

+0

@ ब्रायंटैसाई: दूसरा संस्करण भी सच होगा यदि $ var में कुछ अन्य ऑब्जेक्ट है जो प्रिंट के रूप में प्रिंट करता है, जैसे स्ट्रिंग। असंभव है कि यह एक समस्या होने जा रहा है, यद्यपि। दूसरे संस्करण के लिए – Thilo

+0

+1 –

16

वास्तव में, नाम(), क्योंकि यह वास्तव में enum का मूल्य देता है और अंतिम है इसलिए भविष्य में ओवरराइड नहीं किया जा सकता है। तो वेग में आप

 
#if($var.name() == "INFO") 
6

की तरह कुछ का उपयोग कर सकते वेग 1.5 के रूप में, यदि दो आइटम तुलना की जा रही के साथ == विभिन्न वर्गों के हैं, यह स्वचालित रूप से दोनों पर एक toString() करता है। तो

#if($var == "INFO") 
संबंधित मुद्दे