Späte Antwort. Ich stoße vor kurzem auf dieses Problem und finde eine Lösung. Sie können es wie folgt, registrieren Zum einen eine Bohne von MethodValidationPostProcessor
:
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
und dann die @Validated
auf den Typ Ebene Ihrer Controller hinzufügen:
@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;
}
}
Und wenn Benutzer eine ungültige E-Mail angefordert Adresse wird die ConstraintViolationException
geworfen werden. Und Sie können es fangen mit:
@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 "请求参数不合法";
}
}
Sie können meine Demo-Check-out here
Nein, Sie können nicht. '@ Valid' funktioniert nur für Objekte, die keine primitiven Strukturen sind wie zB' String' oder 'Integer'. Wenn Sie validieren möchten, müssen Sie es selbst tun. –
https://jira.spring.io/browse/SPR-6380 – Bax