मैं विशिष्ट अनुरोध पैरामीटर से जुड़ने के लिए मॉडल/कमांड क्लास को कैसे कॉन्फ़िगर कर सकता हूं?वसंत - मॉडल एट्रिब्यूट और पैरामीटर नाम
उदाहरण के लिए मैं विधि निम्नलिखित है:
@RequestMappint("/success")
ModelAndView success(@ModelAttribute SomeCommand command) {
// process
}
और कमांड:
class SomeCommand {
String title
}
यह /success?title=test
की तरह अनुरोध, जब अनुरोध पैरामीटर नाम गुण नाम कमान के बराबर के लिए ठीक काम कर रहा है।
लेकिन अगर मुझे कुछ अलग नाम मैप करने की ज़रूरत है तो क्या होगा? उदाहरण के लिए यदि अनुरोध: /success?sk_title=test
।
मैं अपने आदेश के अनुरोध पैरामीटर sk_title
से title
कैसे मैप कर सकता हूं?
यह आदेश पैरामीटर के गुच्छा है, और कुछ अलग अलग तरीकों द्वारा प्रयोग किया जाता है (यह अन्य पुराने सिस्टम के साथ एकीकरण है), इसलिए हर RequestMapped विधि के लिए एक @RequestParam के रूप में इस सभी मापदंडों हो रही बहुत काम है और बहुत अधिक कॉपी/पेस्ट जॉब की आवश्यकता होती है, जो बहुत सारी बग और असमर्थनीय कोड लाती है।
मेरे पास इनपुट पैरामीटर नामों पर पर कोई नियंत्रण नहीं है, इसमें वास्तव में अजीब नाम हैं जैसे 'sk_yt_saf_amount', यही कारण है कि मैं इसे अधिक दोस्ताना संपत्ति नामों से बांधने की कोशिश कर रहा हूं।
पीएस मैं मॉडल और दृश्य दृश्य से मॉडल से अलग करने के लिए, इनपुट डेटा के रूप में, शब्द 'कमांड' का उपयोग कर रहा हूं।
तुम यहाँ @RequestParam ("sk_title") की तरह कुछ का उपयोग करना चाहते नहीं चाहेंगे अपने मामला? – Infinity
मेरे यहां दर्जनों पैरा हैं, इसलिए उनके लिए एक कंटेनर रखना बहुत आसान है। और यह विभिन्न तर्कों के साथ कुछ स्थानों/कुछ यूआरएल में भी प्रयोग किया जाता है, लेकिन समान डेटा संरचना –
यदि ऐसा है, तो अपने पृष्ठ में अनुरोध करें मॉडल.addAttribute ("myuser", new MyUser()) फिर अपने @RequestMapping ("/ सफलता") विधि आप @ModelAttribute ("myuser") जोड़ सकते हैं। अपने जेएसपी फॉर्म में, वसंत रूप सहायक टैग का उपयोग करें,। इससे सभी सबमिट किए गए पैरा को आपके मॉडल में संग्रहीत करने में मदद मिलेगी। –
Infinity