मुझे लगता है कि मुझे पता है कि आपका सवाल कहां है। और चूंकि यह सवाल है कि Google के खोज मुख्य परिणामों में पॉप अप है, इसलिए मैं इस पर एक स्पष्ट उत्तर दे सकता हूं कि @Valid एनोटोट क्या करता है।
मैंने 3 परिदृश्य प्रस्तुत किए हैं कि मैंने @Valid का उपयोग कैसे किया है
नमूना:
public class Employee{
private String name;
@NotNull(message="cannot be null")
@Size(min=1, message="cannot be blank")
private String lastName;
}
JSP:
...
<form:form action="processForm" modelAttribute="employee">
<form:input type="text" path="name"/>
<br>
<form:input type="text" path="lastName"/>
<form:errors path="lastName"/>
<input type="submit" value="Submit"/>
</form:form>
...
परिदृश्य 1 के लिए नियंत्रक:
@RequestMapping("processForm")
public String processFormData(@Valid @ModelAttribute("employee") Employee employee){
return "employee-confirmation-page";
}
इस परिदृश्य में, अपने फॉर्म को रिक्त अंतिम नाम फ़ील्ड के साथ जमा करने के बाद, आपको एक त्रुटि पृष्ठ मिलेगा क्योंकि आप सत्यापन नियम लागू कर रहे हैं लेकिन आप इसे जो भी संभाल रहे हैं।
उक्त त्रुटि का उदाहरण:
अपवाद पृष्ठ
परिदृश्य 2 के लिए नियंत्रक:
@RequestMapping("processForm")
public String processFormData(@Valid @ModelAttribute("employee") Employee employee,
BindingResult bindingResult){
return bindingResult.hasErrors() ? "employee-form" : "employee-confirmation-page";
}
इस परिदृश्य में, आप उस सत्यापन से बाइंडिंग परिणाम तक के सभी परिणाम पास कर रहे हैं, इसलिए यह आपको तय करना है कि उस फॉर्म के सत्यापन परिणामों के साथ क्या करना है।
परिदृश्य 3 के लिए नियंत्रक:
@RequestMapping("processForm")
public String processFormData(@Valid @ModelAttribute("employee") Employee employee){
return "employee-confirmation-page";
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Map<String, String> invalidFormProcessor(MethodArgumentNotValidException ex){
}
इस परिदृश्य में आप अभी भी पहले परिदृश्य की तरह त्रुटियों को नहीं संभाल रहे हैं, लेकिन आप इसे किसी अन्य विधि से पास करते हैं जो उस अपवाद का ख्याल रखेगा जो फॉर्म मॉडल को संसाधित करते समय @Valid ट्रिगर करता है। चेक इस देखो क्या मानचित्रण और जो कुछ के साथ क्या करना।
योग करने के लिए : @Valid अपने आप से ऐसा कुछ भी नहीं है जो सत्यापन के सत्यापन को प्रेरित करता है JSR 303 एनोटेट फ़ील्ड ( @NotNull, @Email, @Size, आदि ... ), आपको अभी भी क्या करना है की रणनीति निर्दिष्ट करने की आवश्यकता है कहा सत्यापन के परिणामों के साथ।
आशा है कि मैं लोगों के लिए कुछ स्पष्ट करने में सक्षम था जो इसके साथ ठोकर खा सकते हैं।
@Valid
पर हटा दिया थाApplicationForm
लेकिन, अभी भी सत्यापन फ़ील्डdate
(जैसे सेटnull
) पर निकाल दिया गया था । कृपया समझाएँ।