2011-09-06 14 views
5

क्या अनुरोध मैपिंग में एनम मान का उपयोग करने का कोई तरीका है?क्या @RequestMapping के लिए मान का उपयोग करना संभव है जो एक स्ट्रिंग है लेकिन स्ट्रिंग अक्षर नहीं है?

@RequestMapping(value = "/example", 
method = RequestMethod.POST) 
public final void foo(final HttpServletResponse response, 

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

हालांकि, जब मैं RequestMapping में स्ट्रिंग शाब्दिक को छोड़कर कुछ भी डालने का प्रयास करता हूं तो मुझे संकलन समय त्रुटियां मिलती हैं।

स्ट्रिंग शाब्दिक और एक स्ट्रिंग के बीच का अंतर कैसे पता चलता है जो एक स्ट्रिंग शाब्दिक नहीं है (सुनिश्चित नहीं है कि उसे क्या कहा जाता है)?

यह है कि मैं क्या करने की कोशिश की लेकिन यह संकलन समय पर विफल रही है:

@RequestMapping(value = FooEnum.Example.getStringValue(), 
method = RequestMethod.POST) 
public final void foo(final HttpServletResponse response, 

मैं भी String.format उपयोग करने की कोशिश, लेकिन यह है कि या तो पसंद नहीं करता:

@RequestMapping(value = String.format("%s", FooEnum.Example.getStringValue()), 
method = RequestMethod.POST) 
public final void foo(final HttpServletResponse response, 

उत्तर

1

केवल शाब्दिक मूल्यों सौंपा जा सकता है एनोटेशन गुणों के लिए क्योंकि उन्हें संकलन-समय पर जाना चाहिए जब टिप्पणियां संसाधित की जाती हैं। हां, आप एक एनम वैल्यू का उपयोग कर सकते हैं, जहां "एनम वैल्यू" FooEnum.Example है, लेकिन स्ट्रिंग वैल्यू लेने वाली विशेषता पर नहीं, और आप उस पर कोई विधि नहीं कॉल कर सकते हैं।

+2

शाब्दिक मूल्य * केवल * नहीं, बल्कि, निरंतर (संकलन-समय पर) मान, यहां तक ​​कि "पीओ" + "एसटी" जैसे अभिव्यक्तियां, जब तक कि वे निरंतर मूल्यांकन करते हैं। यही कारण है कि 'RequestMethod.POST' एनोटेशन में मान्य विशेषता मान है, लेकिन विधि कॉल नहीं हैं। –

0

एक एनम मूल्य पर अपना यूआरएल मजाकिया लगता है; अगर मैं enum को अद्यतन करता हूं तो मैं नहीं चाहता कि मेरे यूआरएल बदल जाए। क्या आप वास्तव में इन समान enums का उपयोग कर क्लाइंट लिंक उत्पन्न कर रहे हैं? शायद इसके बजाय आप यूआरएल के लिए स्प्रिंग के हैंडलर बीन से पूछ सकते हैं?

वहाँ भी Spring Expression Language है, लेकिन मैं केवल जानते हैं कि यह @value एनोटेशन में काम करता है, मैं

@RequestMapping आप एक विधि में एकाधिक यूआरएल पकड़ने की कोशिश कर रहे हैं के बारे में निश्चित नहीं हूँ, आप @PathVariable इस्तेमाल कर सकते हैं

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

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