一、数据的格式化
① 配置<mvc:annotation-driven></mvc:annotation-driven>
② 直接在要格式化的属性上加上格式化(这个格式是匹配你输入的数据的格式)
@DateTimeFormat(pattern="yyyy-MM-dd")
privateDate birth;
@NumberFormat(pattern="#,###,###.#") //用#表示数值
privateFloat salary;
格式化出错了怎么办?-----在目标方法中加上BindingResult参数,在调用其方法看其错误。
BindingResult父类是errors,所以BindingResult和errors都可以用于存储错误信息。
@RequestMapping(value="/emp", method=RequestMethod.POST)
public String save(@Valid Employee employee, Errors result, Map<String, Object> map){
if(result.getErrorCount() > 0){
System.out.println("出错了!");
for(FieldError error:result.getFieldErrors()){
System.out.println(error.getField() + ":" + error.getDefaultMessage());
}
//若验证出错, 则转向定制的页面
map.put("departments", departmentDao.getDepartments());
return "input";
二、数据校验
1). 如何校验 ? 注解 ?
① 使用 JSR 303 验证标准
② 加入 hibernate validator 验证框架的 jar 包
③ 在 SpringMVC 配置文件中添加 <mvc:annotation-driven/>
④ 需要在 bean 的属性上添加对应的注解(有很多注解,如@Email:必须是邮箱格式)
如在Employee类中的属性,
@NotEmpty
private String lastName;
⑤. 在目标方法 bean 类型的前面添加 @Valid注解
public String save(@Valid Employee employee, Errors result, Map<String, Object> map){
⑥ 但是运行的时候回报错,是jar包的错误
解决:将hibernatevalidator中的三个跟el相关的jar包复制到tomcat中,同时删除tomcat中的就可以了。其中,Errorsresult可以改为BindingResultresult
2). 验证出错转向到哪一个页面 ?
注意: 需校验的 Bean 对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参。
public String handle91(@Valid User user, BingingResult userBindingResult, String sessionId, ModeluMap, mm, @Valid Dept dept, Errors deptErrors){user和其绑定结果的对象及dept的其绑定结果的对象各自中间不能声明其他的入参。
3). 错误消息 ? 如何显示, 如何把错误消息进行国际化
显示:<form:errors path="*"></form:errors> //显示所有的错误信息
或者可以在每个字段后面显示其错误,不过path要和这个字段名相同。
国际化:
① springmvc.xml配置
② 在i18n.properties中
编写的格式是:校验注解名.请求域中对象名.属性名,如:
NotEmpty.employee.lastName=^^LastName\u4E0D\u80FD\u4E3A\u7A7A.