即根据不同的语言选择不同的错误消息显示。
1、本地化解析器
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="locale"/>
<property name="cookieMaxAge" value="-1"/>
<property name="defaultLocale" value="zh_CN"/>
</bean>
此处使用cookie存储本地化信息,当然也可以选择其他的,如Session存储
2、设置本地化信息的拦截器
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language"/>
</bean>
</mvc:interceptors>
即请求参数中通过language设置语言。
3、消息文件
4、 浏览器输入
http://localhost:9080/spring4/changePassword?password=1&confirmation=2&==language=en_US==
二、使用spring boot实现国际化
1.配置
/**
* @author jinweia.wu
* 国际化配置
* @create 2018-02-24 15:35
**/
@Configuration
public class ValidatorConfiguration extends WebMvcConfigurerAdapter {
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
2.添加资源文件
这里需要注意的地方是:
必须放在classes目录下,而且必须用ValidationMessages这个名字
也就是文件名称需要命令为:
ValidationMessages.properties
ValidationMessages_en.properties
中文
user.id.null=用户名不能为空
英文
user.id.null= user name is not null
3.修改User校验获取信息
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@GroupSequence({User.Adult.class, User.Other.class,User.class})
public class User {
@NotNull(message="{user.id.null}")
private String userName;
//@Max(value=120,message="年龄最大不能查过120",groups = {Adult.class})
private int age;
@Email(message="邮箱格式错误",groups = {Other.class})
private String email;
@CannotHaveBlank(groups = {Adult.class})
private String sex;
@Valid
@ConvertGroup(from=Adult.class,to=Other.class)
private String password;
//分组
public interface Adult{}
public interface Other{}
}
4.发送请求
http://localhost:9000/validator/login?lang=en
注意:此处url参数和java配置中 lci.setParamName(“lang”);一致,参数的值与ValidationMessages_en.properties保持一致
总结:
本地化结合EL表达式可以人性化的给出提示信息,有利于用户体验。
想了解更多java相关技术,请关注公众号“JavaEE那些事”
扫描下面二维码,更多技术资料等你来拿