用于验证传进来的参数
1.User类
public class User implements Serializable {
@NotNull(message="名字不能为空")
private StringuserName;
private Stringemail;
public String getUserName() {
returnuserName;
}
publicvoid setUserName(String userName) {
this.userName =userName == null ?null : userName.trim();
}
public String getEmail() {
returnemail;
}
publicvoid setEmail(String email) {
this.email =email == null ?null : email.trim();
}
}
2.Controller
@Controller
@RequestMapping(value = "/hello")
public class TestController {
@RequestMapping(value = "/index", method = RequestMethod.GET)
@ResponseBody
public String test(@Valid Useruser){
return"test";
}
}
3.统一处理controller的异常类
@ControllerAdvice
public class ControllerValidationHandler {
@ExceptionHandler(BindException.class)
@ResponseBody
public void processValidationError(BindExceptionex) {
BindingResult result =ex.getBindingResult();
FieldError error = result.getFieldError();
List<ObjectError> errors = result.getAllErrors();
for (ObjectError objectError : errors) {
LOG.error("code:{},message:{}", objectError.getCode(), objectError.getDefaultMessage());
}
}
}
4.配置依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.1.Final</version>
</dependency>
5.前端测试
6.总结
一旦前端对应的user的userName为空,那么这个验证框架就会在controller层抛出异常,而@ControllerAdvice注解的类会对这个异常统一进行处理,然后我们可以自己选择如何处理,再返回给前端