2011-08-26 15 views
5

मैं जैक्सन कनवर्टर द्वारा पॉप्युलेट किए गए मेरे मॉडल को सत्यापित करने के लिए वसंत सत्यापन का उपयोग करने की कोशिश कर रहा हूं। तो मैं एक जावा वर्ग,वसंत सत्यापन - प्रोग्रामिक रूप से एक वैलिडेटर से बंधे

class MyClass(){ 
    private String myString; 
} 

इस वर्ग जैक्सन की आबादी है और मैं अपने जावा कोड में उदाहरण है। भी एक सत्यापनकर्ता वर्ग की तरह परिभाषित किया है,

class MyValidator implements Validator { 
    public boolean supports(Class<?> clazz) { 
     return MyClass.class.equals(clazz); 
    } 
    public void validate(Object object, Errors errors) { 
      //Validation logic here 
    } 
} 

अब मुझे क्या करना चाहता था, सत्यापनकर्ता को वस्तु भेजने के लिए और त्रुटियों आपत्ति प्राप्त की जांच करने और आगे बढ़ने के लिए किया गया था। लेकिन,

validate(Object object,Errors errors) 

मुझे एक त्रुटि उदाहरण की आवश्यकता है जो मेरे पास नहीं है। मैं BindingResult या Errors का उपयोग नहीं कर सकता। कृपया आगे बढ़ने के बारे में सलाह दें।

उत्तर

8

आप एक DataBinder साथ कोड में मैन्युअल रूप से कर सकते हैं:

MyClass toValidate = new MyClass(); 
DataBinder binder = new DataBinder(toValidate); 
binder.setValidator(new MyValidator()); 
binder.validate(); 
if (binder.getBindingResult().hasErrors()) { 
    // oh noes! 
} 

हालांकि अगर आप एक @ModelAttribute वसंत-MVC में एक @Controller में परिभाषित किया गया है, कुछ इस तरह काम करते हैं (अंदर रखा जाना चाहिए प्रासंगिक @ नियंत्रक):

@ModelAttribute("myclass") 
public MyClass myClass() { 
    return new MyClass(); 
} 

@InitBinder("myclass") 
protected void initBinder(WebDataBinder binder) { 
    binder.setValidator(new MyValidator()); 
} 

@RequestMapping(value = "/do/something", method = POST) 
public ModelAndView validatedRequest(@Valid @ModelAttribute("myclass") MyClass profile, 
            BindingResult result) { 
    if (result.hasErrors()) { 
     // oh noes! 
    } 
} 
+0

आखिरकार मैंने अपनी सभी मान्यताओं को एक अलग वर्ग में डालने और सीधे मॉडल से बुलाया। लेकिन प्रदान किए गए सुझाव को किसी भी मुद्दे का सामना करने वाले किसी भी व्यक्ति के लिए काम करना चाहिए – Raghav

+0

धन्यवाद आप बहुत भिन्न हैं –

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