मान लीजिए मैं इस तरह एक नमूना इकाई वर्ग है:वसंत MVC - देखने स्वचालित रूप से सत्यापनकर्ताओं
public class Address {
...
}
और एक इसी सत्यापनकर्ता:
@Component
public AddressValidator implements Validator {
@Override
public boolean supports(Class<?> entityClass) {
return entityClass.equals(Address.class);
}
@Override
public void validate(Object obj, Errors errors) {
...
}
}
जब मैं निम्नलिखित की तरह एक नियंत्रक का उपयोग, सब कुछ काम करता है:
@RestController
@RequestMapping("/addresses")
public class AddressController {
@Autowired
private AddressValidator validator;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
@RequestMapping(method=POST)
public Long addNewAddress(@Valid @RequestBody Address address) {
...
}
}
हालांकि, अगर मैं सत्यापनकर्ता पंजीकरण के भाग को छोड़ देते हैं (यानी के बाद), मान्यता नहीं है टी प्रदर्शन किया।
@Autowired
private AddressValidator validator;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
वैधकर्ताओं को पंजीकृत करने के लिए मैन्युअल रूप से व्यर्थ लगता है। क्या मैं स्प्रिंग को स्वचालित रूप से सत्यापनकर्ताओं को देखने के लिए निर्देश दे सकता हूं (नियंत्रकों को कैसे देखा जाता है)?
यह एक वसंत बूट आधारित अनुप्रयोग है।
आप स्वचालित रूप से वसंत प्रमाणीकरण फ्रेमवर्क के लिए 'Validator' संदर्भ सेम डालने का एक तरीका के लिए पूछ रहे हैं? – chrylis
जब मैं एक @ वैलिड एनोटेशन के साथ पता पता जैसे बीन को चिह्नित करता हूं, तो मैं स्प्रिंग को वैलिडेटर इंटरफेस को लागू करने वाले बीन्स के बीच स्वचालित सत्यापनकर्ता को स्वचालित रूप से देखना चाहता हूं। क्या वसंत में ऐसी कार्यक्षमता है? लागू करने के लिए आसान लगता है। इस तरह मुझे initBinder विधि में मैन्युअल रूप से उचित सत्यापनकर्ता सेट करने की आवश्यकता नहीं होगी। –
यह स्प्रिंग 'वैलिडेटर 'इंटरफेस है और' javax.validator.Validator' नहीं है? क्या कोई कारण है कि आप एक कस्टम JSR-303 सत्यापनकर्ता का उपयोग नहीं कर रहे हैं, शायद एक कस्टम '@ ValidAddress' एनोटेशन के साथ? – chrylis