博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2国际化
阅读量:4180 次
发布时间:2019-05-26

本文共 2433 字,大约阅读时间需要 8 分钟。

在struts2中需要做国际化的有:

jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化

jsp页面的国际化

第一步

在src目录下新建tanggao_en_US.properties,内容为

username=username
password=password

tanggao_zh_CN.properties文件,内容为

username=\u7528\u6237\u540D

password=\u5BC6\u7801

这里写图片描述

第二步

在struts.xml中配置

其中的tanggao就是国际化资源文件的baseNmae

第三步 在jsp页面中显示 方法

结果如下图:

这里写图片描述

action错误的国际化

这里写图片描述

在tanggao_en_US.properties中增加以下内容

username.invalid=username invalid…

在tanggao_zh_CN.properties中增加以下内容

username.invalid=\u7528\u6237\u540d\u4e0d\u5408\u6cd5…

修改HelloAction中的validate方法,将错误加到ActionError中,在这里将使用到ActionSupport中的getText方法获得和国际化资源文件相关的信息。

以username验证为例:

if (null == username || username.length() = "" || username.length() > 10) {           this.addActionError(this.getText("username.invalid"));       }

验证框架的国际化(field级别错误)

在message_en_US.properties文件中增加以下内容

username.xml.invalid=validate information

在message_zh_CN.properties文件中增加以下内容

username.xml.invalid=\u9a8c\u8bc1\u6846\u67b6\u4fe1\u606f

然后修改验证框架,需要将在properties文件中的内容增加到框架中。

以username为例

true

在message标签中增加属性key,值为properties文件中的key

标签中key大多是和国际化相关的

国际化资源文件的分类

当应用程序很大时,需要国际化的东西会很多,因此需要将国际化资源文件进行分类。

需要知道的是在src中的properties文件是全局资源文件,另外还可以分为包级别的和类级别的

首先看看包级别的

命名规则为package_language_country.properties

新建package_en_US.properties,内容为

username.xml.invalid=package validate information

新建package_zh_CN.properties,内容为

username.xml.invalid=\u5305\u9a8c\u8bc1\u4fe1\u606f

可以看到输出的信息为“包验证信息”,由此可见包级别的国际化资源文件的优先级高于全局国际化资源文件。

类级别

新建HelloAction_en_US.properties,内容为

username.xml.invalid=class validate information

新建HellAction_zh_CN.properties,内容为

username.xml.invalid=\u7c7b\u9a8c\u8bc1\u4fe1\u606f

此时可以看到输出的信息为“类验证信息”。

由此可以得到国际化资源文件的优先级

全局<包级别<类级别

另外要进行表单的国际化时,要去掉theme=”simple”

在HelloAction_en_US.properties中增加

username.name=username

在HelloAction_zh_CN.properties中增加

username.name=\u7528\u6237\u540d

这里写图片描述

修改表单标签

注意到key一般是和国际化相关的。

另外除了用

另外除了用这个标签外,还可以使用这个标签

标签中包含name,代表着可以定义资源文件的baseName,如可以定义成temp,那么对应着

temp_en_US.properties和temp_zh_CN.properties这两个资源文件。

如定义:

struts2

注意到可以在标签中增加 标签。

在hello_en_US.properties文件中增加

world=hello {0}

hello_zh_CN.properties中增加

world=\u4f60\u597d,struts2

在struts2的默认拦截器栈中已经定义了i18n拦截器,所以struts2已经是一个国际化的框架了。

struts2会查找从客户端提交的request_locale属性,并存到session中的WW_TRANS_I18N_LOCALE字段

中。

这个 标签外,还可以使用 这个标签


总结一下显示方法:

getText("username.invalid")
你可能感兴趣的文章
Spring AOP概述
查看>>
Apache Maven入门指南
查看>>
Apache Maven的插件概述
查看>>
Apache Maven项目提供的Archetype插件详解
查看>>
Apache Maven项目提供的Compiler插件详解
查看>>
Apache Maven项目提供的Ant插件详解
查看>>
Apache Maven项目提供的AntRun插件详解
查看>>
Apache Maven项目提供的EJB插件详解
查看>>
Hibernate中持久化上下文的flush操作之一COMMIT
查看>>
Hibernate的乐观锁并发控制机制
查看>>
Hibernate的悲观锁并发控制机制及LockMode
查看>>
Hibernate中的数据的获取策略(fetching)
查看>>
Hibernate中通过HQL/JPQL查询的方式实现动态数据获取
查看>>
Hibernate中通过FetchProfile的方式实现动态数据获取
查看>>
Hibernate应用中通过JPA配置Entity缓存
查看>>
Hibernate中配置二级缓存的并发策略
查看>>
Hibernate中的Query cache(查询缓存)
查看>>
Hibernate的interceptors与events
查看>>
Android常用代码
查看>>
Cardboard虚拟现实开发初步(二)
查看>>