SpringMVC学习笔记(四)
SpringMVC(四)
- SpringMVC数据的格式化
以Date格式为例
配置:
<mvc:annotation-driven></mvc:annotation-driven>
在类变量处用注解标注
@DateTimeFormat(pattern="yyyy-mm-dd")
private Date birth;
//pattern为输入样式
例2:
@NumberFormat(pattern="#,###,###.#")
输入:1,234,567,8
输出:1234567.8
- 当类型转换失败时,如何得到错误消息
DataBinder会把错误信息放入到BinderResult里面,则可以在目标方法加入形参 BindingResult result
通过result的内置方法可以得到错误信息。
@RequestMapping(value="/emp",method=RequestMethod.POST)
public String save(Employee employee,BindingResult result) {
if(result.getErrorCount() > 0) {
System.out.println("出错啦!!");
for(FieldError error:result.getFieldErrors())
System.out.println(error.getField()+":"+error.getDefaultMessage());
}
System.out.println("save:"+employee);
employeeDao.save(employee);
return "redirect:/emps";
}
- JSR303数据校验
JSR303 通过在bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证
HibernateValidator是JRS303的一个参考实现,除支持所有标准的校验注解外,还支持以下扩展注解。
注解 | 功能 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串必须为非空 |
@Range | 被注释的元素必须在合适的范围内 |
JSR 303校验方法:
1、导入hibernate Validator 的jar包,加入hibernate Validator 验证框架
2、在SpringMVC 配置文件中添加<mvc:annotation-driven/>
3、需要在bean的属性上添加对应的注解
4、在目标方法bean类型的签名添加@Valid注解
public String save(@Valid Employee employee,BindingResult result){
...
}
注意!!:需校验的Bean对象和其绑定结果对象或错误对象是成对出现的,它们之间不允许声明其他的入参
- SpringMVC错误消息的显示及国际化,错误后指向页面
-显示:可通过<form:erroes path="字段名">
显示错误信息
-指向页面:通过BindingResult的判断来进行指向页面的指定,必要可进行表单回显。
public String save(@Valid Employee employee,BindingResult result,Map<String,Object> map) {
if(result.getErrorCount() > 0) {
map.put("departments", departmentDao.getDepartments());
map.put("employees", employeeDao.getAll());
return "add";
}
-定制国际化错误信息显示
当一个属性校验失败后,校验框架会为该属性生成4个消息代码,这些代码以校验注解类名为前缀,结合modelAttribute、属性名及属性类型名生成多个消息代码。
当使用SpringMVC标签显示错误消息时,SpringMVC会查看WEB上下是否装配了对应的国际化消息,如果没有,则会显示默认的错误消息,否则使用国际化消息。
1、创建properties文件定制
格式:
键:校验注解名 . 类名(首字母小写). 属性名
值:提示的消息
2、配置国际化资源文件
SpringMVC配置文件中:
例:errorsmsg.properties
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="errorsmsg"></property>
</bean>
提示消息的国际化
若数据类型转换或数据格式转换时发生错误,或该有得参数不存在,或调用处理方法时发生错误,都会在隐含模型中创建错误消息。其错误代码前缀说明如下:
-required:不要参数不存在。如@RequiredParam(“param1”)标注了一个入参,但该参数不存在
-typeMismatch:在数据绑定时,发生数据类型不匹配的问题
-methodInvocation:SpringMVC在调用处理方法时发生了错误
上一篇: springmvc学习笔记1
下一篇: SpringMVC 学习笔记二