关于SpringMVC使用JSR-303进行校验,下面给出完整攻略:
1. 什么是JSR-303校验框架
JSR-303是Java EE 6规范中的一项内容,它定义了一套校验框架,可以让我们在JavaBean的属性上添加一些注解来描述这些属性的约束条件,然后再通过调用校验框架提供的API进行校验,从而保证JavaBean中属性的合法性。
2. 在SpringMVC中使用 JSR-303进行校验
在SpringMVC中使用JSR-303进行校验有两个步骤:
2.1 实现JavaBean并在属性上添加注解描述
示例1:
public class Book {
@NotEmpty(message = "书名不能为空")
private String name;
@DecimalMin("0.1")
private double price;
@Min(value = 1, message = "页数不能小于1页")
private int pages;
// 省略getter和setter方法
}
在JavaBean中我们添加了三个属性,分别是name、price和pages,这三个属性上均添加了JSR-303提供的注解用来描述这些属性的约束条件。
2.2 在Controller中调用校验框架并处理错误信息
示例2:
@Controller
@RequestMapping("/book")
public class BookController {
@RequestMapping("/save")
public String save(@Valid Book book, BindingResult result, Model model) {
// 校验bean
if (result.hasErrors()) {
// 处理错误信息
String errorInfo = getErrors(result);
model.addAttribute("errorMsg", errorInfo);
return "/error";
}
// do something
// ...
// 返回成功页面
return "/success";
}
// 获取错误信息
private String getErrors(BindingResult result) {
List<FieldError> fieldErrors = result.getFieldErrors();
StringBuffer errorInfo = new StringBuffer("");
for (FieldError fieldError : fieldErrors) {
errorInfo.append(fieldError.getDefaultMessage() + "<br>");
}
return errorInfo.toString();
}
}
在Controller中,我们的save方法中有一个Book对象需要被校验,我们添加了@Valid注解用来启用校验框架,同时用BindingResult对象来存储错误信息。如果校验Book对象时发生了错误,则直接通过getErrors方法获取所有的错误信息,然后将错误信息放到Model中交给视图来渲染。
3. 总结
从上述两个简单的示例可以看出来,使用JSR-303进行校验非常方便,只需要在JavaBean的属性上添加对应的注解即可。在SpringMVC中我们只需要在Controller中加入@Valid注解并处理错误信息即可完成校验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC 使用JSR-303进行校验 @Valid示例 - Python技术站