देर उत्तर। मुझे हाल ही में इस समस्या का सामना करना पड़ता है और समाधान मिल जाता है। इस प्रकार आप यह कर सकते, सबसे पहले MethodValidationPostProcessor
की एक सेम रजिस्टर:
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
और फिर अपने नियंत्रक के प्रकार के स्तर तक @Validated
जोड़ें:
@RestController
@Validated
public class FooController {
@RequestMapping("/email")
public Map<String, Object> validate(@Email(message="请输入合法的email地址") @RequestParam String email){
Map<String, Object> result = new HashMap<String, Object>();
result.put("email", email);
return result;
}
}
और उपयोगकर्ता एक अवैध ईमेल के साथ अनुरोध किया है, तो पता, ConstraintViolationException
फेंक दिया जाएगा। और अगर आप इसके साथ पकड़ कर सकते हैं:
@ControllerAdvice
public class AmazonExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleValidationException(ConstraintViolationException e){
for(ConstraintViolation<?> s:e.getConstraintViolations()){
return s.getInvalidValue()+": "+s.getMessage();
}
return "请求参数不合法";
}
}
तुम मेरे डेमो here
स्रोत
2016-05-25 02:08:08
नहीं, तुम नहीं कर सकते हैं बाहर की जाँच कर सकते हैं। '@ वैध 'केवल ऑब्जेक्ट्स के लिए काम करता है, उदाहरण के लिए' स्ट्रिंग 'या' इंटीजर 'जैसी आदिम संरचनाएं नहीं। अगर आप मान्य करना चाहते हैं तो आपको इसे स्वयं करना होगा। –
https://jira.spring.io/browse/SPR-6380 – Bax