例子:
public String getStudentResult(@RequestParam(value = "regNo", required = true) String regNo, ModelMap model){
如何在此处为 regNo 参数使用@valid?
最佳答案
迟到的答案。我最近遇到了这个问题并找到了解决方案。你可以这样做,
首先注册一个MethodValidationPostProcessor
的bean:
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
然后将 @Validated
添加到 Controller 的类型级别:
@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
关于spring - 为什么我不能在 Spring MVC 中使用 Valid 参数和 RequestParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229453/