2012-11-06 12 views
5

में अंडरस्कोर के साथ बाध्यकारी अनुरोध पैरामीटर निम्न आवश्यकता पर विचार करें: स्प्रिंग एमवीसी 3.0 का उपयोग कर अनुरोध पैरामीटर को ऑब्जेक्ट्स से बाध्य होना चाहिए। अनुरोध पैरामीटर में अंडरस्कोर (उदा। http://myurl:80/x?param_one=1&param_two=2) शामिल हैं। इन पैरामीटर को निम्न ऑब्जेक्ट से बाध्य किया जाना चाहिए:स्प्रिंग एमवीसी 3.0

class MyObject { 
    private Integer paramOne; 
    private Integer paramTwo; 

    ... 
} 

आप यह करने के बारे में कैसे जाएंगे?

महत्वपूर्ण नोट: पर विचार मापदंडों और इस तरह की वस्तुओं की एक पर्याप्त राशि वहाँ हो सकता है और यह है कि यह ऑब्जेक्ट अंडरस्कोर शामिल पर सेटर तरीकों को परिभाषित करने के लिए अच्छा अभ्यास माना जाता है नहीं कर रहा है हो सकता है।

+1

मैंने इस प्रश्न का उत्तर जोड़ा, आप नीचे देख सकते हैं। क्या आपने जो कुछ प्रदान किया है उसके मुकाबले आप इसके लिए और अधिक सुरुचिपूर्ण समाधान ढूंढ रहे हैं? मैं खुद को एक बेहतर समाधान पसंद करूंगा। –

उत्तर

1

आप इस का उपयोग कर @RequestMapping विशेषता कर सकते हैं

@RequestParam(value = "param_One") String paramOne,@RequestParam(value = "param_two") String paramTwo 

विधि हस्ताक्षर

में इस जोड़े लेकिन सबसे अच्छा के लिए एक ही चर नाम पारित करने के लिए अपने बेहतर अभ्यास

+4

जबकि मैं उत्तर की सराहना करता हूं, ध्यान रखें कि प्रश्न के निचले भाग में मैंने कहा: * यह भी मान लें कि इस तरह के पैरामीटर और ऑब्जेक्ट्स की पर्याप्त मात्रा हो सकती है। इस मामले में '@ अनुरोधपाराम 'असुरक्षित है, क्योंकि इसका मतलब 20 से अधिक तर्कों के साथ नियंत्रक विधि हस्ताक्षर होगा। – tmbrggmn

2

Rajith के जवाब नियंत्रक तरीकों के लिए है विशेष रूप से, और मूल रूप से किसी ऑब्जेक्ट को अंडरस्कोर पैरामीटर को बाध्य करने के तरीके से आपके प्रश्न को संबोधित नहीं करता है।

hacky समाधान मैं वर्तमान में जगह में पूरा करने के लिए क्या आप वास्तव में पूछ रहे हैं इस शैली में मेरी setters नाम के लिए है:

public void setProject_ids(List<Long> project_ids) { 

ध्यान दें कि RequestParam तरीकों को लागू नहीं किया जा सकता है, और यह भी नहीं है इस सेटटर के तर्क पर लागू होने पर एक प्रभाव।

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