<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.5.Final</version>
</dependency>
public class PageBounds {
@Min(value=1, message = "页码必须大于等于1")
private int page;
@Min(value=5, message = "页面大小必须大于等于5")
private int count;
}
@GetMapping("form")
public String form(
@Valid PageBounds pageBounds,
Errors errors) {
if (errors.hasErrors())
return "error";
return pageBounds.getPage() + " : " + pageBounds.getCount();
}
@Test
public void formError() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders.get("/form")
.queryParam("page", "1")
.queryParam("count", "0")
).andExpect(MockMvcResultMatchers.content().string("error"));
}
提示
如果不添加 Errors 参数,当传入的参数存在校验错误时,将会抛出 BindException 或 MethodArgumentNotValidException,因此可以使用 @ExceptionHandler 和 @ControllerAdvice 来完成统一的异常处理,返回合理的参数异常信息。