您的位置:首页 > 编程语言 > Java开发

10. SpringMVC 数据验证例子3 - 添加国际化支持

2016-03-08 12:58 477 查看
本系列入门学习参考极客学院Spring入门系列视频学习记录总结而来

继续沿用SpringMVC数据验证例子2中的代码,添加国际化

resource中新建一个i18n目录

新建messages.properties,将JavaBean中的数据验证错误提示信息保存在国际化文件中

messages.properites:



Between.user.age=\u5E94\u8BE5\u5728{min}\u4E0E{max}\u4E4B\u95F4
Pattern.user.password=\u5BC6\u7801\u662F6-30\u4E2A\u5B57\u7B26\uFF0C\u5FC5\u987B\u662F\u5B57\u6BCD\u6216\u6570\u5B57\u7EC4\u5408
Length.user.realName=\u975E\u6CD5\u771F\u5B9E\u59D3\u540D
NotEmpty.user.userName=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
Email.user.email=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u90AE\u4EF6\u5730\u5740
NotNull.user.age=\u8BF7\u586B\u5165\u60A8\u7684\u5E74\u9F84


修改JavaBean中的注解:

@NotEmpty(message="{NotEmpty.user.userName}")
private String userName ;

@Pattern(regexp="[0-9a-zA-Z]{6,30}", message="{Pattern.user.password}")
private String password ;

@Length(min=2, max=100, message="{Length.user.realName}")
private String realName ;

@Email(message="{Email.user.email}")
private String email ;

@Between(min = 18 , max = 60)
@NotNull(message = "{NotNull.user.age}")
private Integer age ;


自定义数据验证注解类也必须进行修改:

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

/**
* 新建自定义验证规则注解类
* 验证年龄范围
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {BetweenValidator.class})
public @interface Between {

String message() default "{Between.user.age}";

Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default {};

int min();

int max();

}


修改springmvc.xml文件中的validator Bean:

<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
<property name="validationMessageSource" ref="messageSource" />
</bean>

<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="i18n/messages" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc