JSR-303 Spring MVC 消息国际化 配置
2014-11-15 16:03
246 查看
本文中使用的个软件版本(见最下方截图):
Spring:4.1.1
JSR 303 Validator: 1.0.0
JSR 303 Validator实现:hibernate 4.3.2
说明:为什么这里选择hibernate 4.3.2,而没有选择更高版本?
原因:Hibernate Validator 4.X 版本是完全基于JSR303;5.X版本还实现了JSR349的特性。
What’s the difference between Hibernate Validator 3, 4 and 5?
Hibernate Validator 3.x and 4.x/5.x are different codebases.
Hibernate Validator is the original validation framework from the Hibernate team and is now referred to as "Legacy Hibernate Validator".
Hibernate Validator 4.x is the reference implementation of Bean Validation 1.0 (JSR 303),while Hibernate Validator 5.x is the reference implementation of Bean Validation 1.1 (JSR 349). Active development
happens on the 5.x codebase.
一、使用Hibernate Validator内置的国际化消息配置
1. 引入所需要的包
2. 配置
4. 在Controller中编写验证逻辑
5. 页面错误消息配置
6. 测试验证消息
以上的方式是默认从Hibernate Validator包中的消息配置文件中读取的:
当我们需要自定义错误消息我们有两种方法:
1. 重写Hibernate Validator默认的消息配置文件,在其中自定义错误消息。
2. 自由指定错误消息basename,自定义错误消息。
二、 重写Hibernate Validator默认的消息配置文件,在其中自定义错误消息
此时我们只需要在classpath的根路径下放置一个同名的ValidationMessages属性文件,在其中自定义我们的国际化消息就可以实现。
1. 在跟路径下建同名配置文件,自定义错误消息
2. 验证对象上指定message的key
3. 验证错误消息
三、自定义国际化消息配置
重写Hibernate Validator国际化消息配置虽然可以达到我们首先自定义消息键值对的目的,但是这种方式约束了我们国际化消息文件的文件位置,这不利于项目结构管理。
我们希望能自定义国际化消息文件的路径、文件名和错误消息键值对。
1. 更改配置
2. 自定义国际化消息文件的路径、文件名和错误消息键值对。
3. 验证错误消息
软件版本:
Spring:4.1.1
JSR 303 Validator: 1.0.0
JSR 303 Validator实现:hibernate 4.3.2
说明:为什么这里选择hibernate 4.3.2,而没有选择更高版本?
原因:Hibernate Validator 4.X 版本是完全基于JSR303;5.X版本还实现了JSR349的特性。
What’s the difference between Hibernate Validator 3, 4 and 5?
Hibernate Validator 3.x and 4.x/5.x are different codebases.
Hibernate Validator is the original validation framework from the Hibernate team and is now referred to as "Legacy Hibernate Validator".
Hibernate Validator 4.x is the reference implementation of Bean Validation 1.0 (JSR 303),while Hibernate Validator 5.x is the reference implementation of Bean Validation 1.1 (JSR 349). Active development
happens on the 5.x codebase.
一、使用Hibernate Validator内置的国际化消息配置
1. 引入所需要的包
2. 配置
<mvc:annotation-driven />3. 在需要验证的对象属性字段上用注解校验
<pre name="code" class="java">public class Application { private int appId; private int appServerId; @NotBlank private String appName; @NotBlank private String appUri; private String logFilePrefix; private String logFileSuffixPattern;
4. 在Controller中编写验证逻辑
@RequestMapping(value = "/create", method = RequestMethod.POST) public String createApp(@Valid @ModelAttribute("app") Application application, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) { return "app/create"; } this.applicationService.addApplication(application); return "redirect:app/list"; }
5. 页面错误消息配置
<body> <sf:form action="/finder/app/create" method="post" modelAttribute="app"> appServerId:<sf:select path="appServerId" items="${appServers}" itemValue="appServerId" itemLabel="appServerUri" /><br /> appName:<sf:input path="appName" id="appName"/><sf:errors path="appName" /><br /> appUri:<sf:input path="appUri" id="appUri"/><sf:errors path="appUri" /><br /> logFilePrefix:<sf:input path="logFilePrefix" id="logFilePrefix"/><sf:errors path="logFilePrefix" /><br /> logFileSuffixPattern:<sf:input path="logFileSuffixPattern" id="logFileSuffixPattern"/><sf:errors path="logFileSuffixPattern" /><br /> <input type="submit" name="submit" value="submit" /> </sf:form> </body>
6. 测试验证消息
以上的方式是默认从Hibernate Validator包中的消息配置文件中读取的:
当我们需要自定义错误消息我们有两种方法:
1. 重写Hibernate Validator默认的消息配置文件,在其中自定义错误消息。
2. 自由指定错误消息basename,自定义错误消息。
二、 重写Hibernate Validator默认的消息配置文件,在其中自定义错误消息
此时我们只需要在classpath的根路径下放置一个同名的ValidationMessages属性文件,在其中自定义我们的国际化消息就可以实现。
1. 在跟路径下建同名配置文件,自定义错误消息
2. 验证对象上指定message的key
public class Application { private int appId; private int appServerId; @NotBlank(message="{appName.not.blank}") private String appName; @NotBlank(message="{appUri.not.blank}") private String appUri; private String logFilePrefix; private String logFileSuffixPattern;
3. 验证错误消息
三、自定义国际化消息配置
重写Hibernate Validator国际化消息配置虽然可以达到我们首先自定义消息键值对的目的,但是这种方式约束了我们国际化消息文件的文件位置,这不利于项目结构管理。
我们希望能自定义国际化消息文件的路径、文件名和错误消息键值对。
1. 更改配置
<pre name="code" class="html"> <!-- i18n messages --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="defaultEncoding" value="UTF-8" /> <!-- you can config a single basename --> <!--<property name="basename" value="" />--> <!-- multi basename --> <property name="basenames"> <list> <value>org/dsw/config/i18n/ValidationMessages</value> <value>org/dsw/config/i18n/BusinessMessages</value> </list> </property> </bean> <!-- JSR 303 Validator --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator" /> <property name="validationMessageSource" ref="messageSource"/> </bean> <mvc:annotation-driven validator="validator" />
2. 自定义国际化消息文件的路径、文件名和错误消息键值对。
3. 验证错误消息
软件版本:
相关文章推荐
- JSR-303 Spring MVC 验证消息国际化 配置
- JSR-303 Spring MVC 消息国际化 配置
- Spring_JSR 303标准的校验框架与SpringMVC际化、及校验字符串消息国际化
- spring mvc annotation-driven 手动配置jsr303
- Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验 使用消息资源文件对消息国际化
- Spring MVC国际化配置 (转帖)
- [solved] Spring MVC 中的国际化的message.properties该如何配置?
- Spring MVC 基于session 国际化配置!! 亲测可用
- [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言
- spring MVC 国际化实现配置
- Spring MVC国际化配置
- JSR-303规范,Bean Validation(spring mvc中如何校验)
- SpringMVC 数据的格式化、JSR 303数据校验和国际化
- JSR-303规范,Bean Validation(spring mvc中如何校验)
- spring mvc 使用jsr-303 @Valid实现bean的字段验证
- Spring mvc之JSR303框架实现数据格式化,数据验证,资源国际化
- spring mvc系列文章 - Spring MVC国际化配置
- springmvc集成JSR-303的解析消息文件的默认实现浅析
- 基于Spring MVC框架JSR-303的自定义注解Validator验证实现
- spring mvc配置主题和国际化