2010-11-15 15 views
5

मैं स्प्रिंग 3 और जेएसआर 303 का उपयोग कर रहा हूं। मेरे पास एक फॉर्म बैकिंग ऑब्जेक्ट है जिसका नेस्टेड ऑब्जेक्ट्स को सत्यापित करने की आवश्यकता है। नीचे दिए गए उदाहरण में, मैं formObject.getFoo() को कैसे मान्य करूं। GetBean()? जब मैं नीचे दिया गया कोड चलाता हूं, तो परिणाम पैरामीटर हमेशा खाली होता है, भले ही HTML पृष्ठ कुछ भी सबमिट नहीं करता है, जब सत्यापन विफल होना चाहिए। ध्यान दें कि यह काम करता है (यानी सत्यापन विफल रहता है) जब मैं इसे validate(formObject.getFoo().getBean(), Bean.class) पर कॉल करके मैन्युअल रूप से मान्य करता हूं।स्प्रिंग एमवीसी और जेएसआर 303

@Controller 
public class FormController { 
    @RequestMapping(method = RequestMethod.POST) 
    public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) { 
      ... 
    } 

    // This is the class that needs to be validated. 
    public class Bean { 
     @NotBlank 
     private String name; 
    } 

    public class Foo { 
     private Bean bean; 
    } 

    public class FormObject { 
     private Foo foo; 
    } 
} 

उत्तर

12

आप सत्यापन एक बच्चे वस्तु में नीचे झरना चाहते हैं, तो आप @Valid एनोटेशन मैदान पर पैरेंट ऑब्जेक्ट में डाल करना होगा:

public class Bean { 
    @NotBlank 
    private String name; 
} 

public class Foo { 
    @Valid 
    private Bean bean; 
} 

public class FormObject { 
    @Valid 
    private Foo foo; 
} 
+0

धन्यवाद, लेकिन कोई भाग्य यहाँ। –

+0

@ टॉम - मेरे लिए काम करता है और कल्पना में है। आप किस कार्यान्वयन का उपयोग कर रहे हैं? – GaryF

+0

ओह, मेरे बुरे। यह काम करता हैं। धन्यवाद! –

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