फ्रीमार्कर का उपयोग कर नवीनतम वसंत एमवीसी।वसंत एमवीसी फॉर्म को सत्यापित करने के तरीके के रूप में उलझन में, मेरे विकल्प क्या हैं?
किसी को उम्मीद है कि कोई मुझे बता सकता है कि मेरे विकल्प वसंत एमवीसी के साथ एक फॉर्म को मान्य करने के मामले में क्या हैं, और यह करने का सुझाव क्या होगा।
मेरे पास एक ऐसा फॉर्म है जो सीधे मॉडल पर मैप नहीं करता है, इसमें इनपुट फ़ील्ड्स हैं जो पोस्ट किए जाने पर 2 मॉडल ऑब्जेक्ट्स को प्रारंभ करने के लिए उपयोग किए जाएंगे जिन्हें मुझे सत्यापित करने की आवश्यकता होगी, और यदि वे पास करेंगे तो मैं उन्हें सहेज दूंगा ।
यदि वे असफल होते हैं, तो मैं फॉर्म पर वापस लौटना चाहता हूं, उपयोगकर्ता द्वारा दर्ज किए गए मानों को पूर्व-भरना और त्रुटि संदेशों को प्रदर्शित करना चाहता हूं।
मैं यहाँ पढ़ लिया है और वहाँ के बारे में 2 तरीकों, जिनमें से एक बार मैंने किया है और समझते हैं कि यह कैसे काम करता है:
@RequestMapping(...., method = RequestMethod.POST)
public ModelAndView myMethod(@Valid MyModel, BindingResult bindingResult) {
ModelAndView mav = new ModelAndView("some/view");
mav.addObject("mymodel", myModel);
if(bindingResult.hasErrors()) {
return mav;
}
}
अब इस काम अगर मेरे फ़ॉर्म को सीधे मैप किया गया, लेकिन मेरी स्थिति में मैं है:
प्रपत्र फ़ील्ड्स है कि किसी भी विशिष्ट मॉडल पर मैप नहीं करते हैं, वे 2 मॉडल से कुछ गुण होते हैं।
से पहले सत्यापन occurrs, मैं मैन्युअल रूप से 2 मॉडल बनाने के लिए, फार्म से मूल्यों को निर्धारित की जरूरत है, और मैन्युअल रूप से भी कुछ गुण सेट:
दोनों मॉडल (MODEL1, MODEL2) परकॉल सत्यापित करें, और संलग्न इन त्रुटि संदेशों को त्रुटियों के संग्रह में जो मुझे एक ही दृश्य पृष्ठ पर वापस जाने की आवश्यकता है यदि चीजें काम नहीं करती हैं।
जब फॉर्म पोस्ट करते हैं, तो मुझे कुछ डेटाबेस कॉल करना पड़ता है, और उन परिणामों के आधार पर त्रुटियों के संग्रह में अतिरिक्त संदेश जोड़ने की आवश्यकता हो सकती है।
क्या कोई मुझे बता सकता है कि इस तरह के सत्यापन कैसे करें?
छद्म नीचे कोड:
Model1 model1 = new Model1();
Model2 model2 = new Model2();
// manually or somehow automatically set the posted form values to model1 and model2.
// set some fields manually, not from posted form
model1.setProperty10(GlobalSettings.getDefaultProperty10());
model2.setProperty11(GlobalSettings.getDefaultProperty11());
// db calls, if they fail, add to errors collection
if(bindingResult.hasErrors()) {
return mav;
}
// validation passed, save
Model1Service.save(model1);
Model2Service.save(model2);
redirect to another view
अद्यतन
मैं अपने मॉडल पर JSR 303 एनोटेशन का उपयोग किया है अभी, और यह बहुत अच्छा है कि अगर मैं अभी भी उन का उपयोग कर सकते हैं।
अद्यतन द्वितीय
कृपया मैं के लिए क्या देख रहा हूँ की एक सारांश के लिए नीचे इनाम विवरण पढ़ें।