springmvc4 自定义错误提示信息(i18N资源文件配置) spring4技术
当我们启用JSR303校验后,系统会在校验的时候 给出一些错误提示信息, 这些信息可能不是我们想要的,那么我们应该如何配置我喜欢的提示信息呢?
在springMVC4里我们通过国际化资源文件来实现的。
1)配置资源化文件
这个文件如何编写内容呢?
当一个属性校验失败后,校验框架会为该属性生成 4 个消 息代码,这些代码以校验注解类名为前缀,结合modleAttribute、属性名及属性类型名生成多个对应的消息代码:例如 User 类中的 password 属性标准了一个 @Pattern 注解,当该属性值不满足 @Pattern 所定义的规则时, 就会产生以下 4 个错误代码,提示范围逐步增大:
Pattern.user.password –
Pattern.password –
Pattern.java.lang.String –
Pattern
2) 实例: handler:
@RequestMapping(value="/emp", method=RequestMethod.POST)
public String save(@Valid Employee employee, Errors result{
if(result.getErrorCount() > 0){
for(FieldError error:result.getFieldErrors()){
System.out.println(error.getField() + ":" + error.getDefaultMessage());
}
return "input";
}
return "redirect:/emps";
}
bean:
public class Employee {
@NotEmpty
private String lastName;
private String email;
@Past
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
... ...
}
i18n.properties : src目录下,国际化资源文件编写内容如下:
注解类型.bean.bean属性 = 提示信息资源
NotEmpty.employee.lastName=LastName\u4E0D\u80FD\u4E3A\u7A7A.
Email.employee.email=Email\u5730\u5740\u4E0D\u5408\u6CD5
Past.employee.birth=Birth\u4E0D\u80FD\u662F\u4E00\u4E2A\u5C06\u6765\u7684\u65F6\u95F4.
typeMismatch.employee.birth=Birth\u4E0D\u662F\u4E00\u4E2A\u65E5\u671F.
springMVC 引入国际化资源文件:
当使用 Spring MVC 标签显示错误消息时, Spring MVC 会查看WEB 上下文是否装配了对应的国际化消息,如果没有,则显示默认的错误消息,否则使用国际化消息。
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>
至此,我们就完成了自定义表单验证错误提示信息的效果。
如有疑问 请留言 欢迎提供建议
评论已有 0 条