struts2国际化

在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中配置

    <constant name="struts.custom.i18n.resources" value="tanggao"></constant> 

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

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

<s:debug></s:debug>
    <s:text name="username"></s:text>
    <s:form action="Hello"  >
        <s:textfield name="username" key="username"></s:textfield>
        <s:password name="password" key="password"> </s:password>
        <s:submit></s:submit>
    </s:form>

结果如下图:

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为例

<field name="username">   
    <field-validator type="requiredstring">   
        <param name="trim">true</param>   
        <message key="username.xml.invalid"></message>   
    </field-validator>   
</field>   

在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

修改表单标签

<s:textfield name="username" key="username.name"></s:textfield>   

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

另外除了用

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

<s:i18n name="temp"></s:i18n>   

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

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

如定义:

<s:i18n name="hello">   
    <s:text name="world">   
        <s:param>struts2</s:param>   
    </s:text>   
</s:i18n>   

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

在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字段

中。

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

<s:i18n name="temp"></s:i18n>   

总结一下显示方法:

<s:textname="username"></s:text>

getText("username.invalid") 

<message key="username.xml.invalid"></message>  

<s:textfield name="username" key="username.name"></s:textfield>    

<s:i18n name="temp"></s:i18n>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

Spring的核心模块解析

Spring框架是一个轻量级的集成式开发框架,可以和任何一种框架集成在一起使用,可以说是一个大的全家桶。Spring从1.x发展到现在的5.x可以说是越来越强大...

34110
来自专栏java沉淀

build.xml: 33: Class not found: javac1.8的解决办法

1893
来自专栏运维咖啡吧

LDAP落地实战(四):Jenkins集成OpenLDAP认证

安装方法:登录Jenkins --> 系统管理 --> 插件管理 --> 可选插件 --> 搜索LDAP --> 选中 --> 直接安装 --> 安装完成重启

2691
来自专栏张善友的专栏

Windows Server 2008密码重设盘

   Windows server 2008提供了一个密码重设盘的功能,可以通过创建一个软盘来作为忘记密码后重设用户密码的作用。      在系统安装完成后,...

2397
来自专栏好好学习吧

testng中使用reportng报告

1602
来自专栏Java帮帮-微信公众号-技术文章全总结

springboot入门(4)_web开发

springboot入门(4)_web开发 摘要: 前几篇大概介绍了demo的搭建运行,Thymeleaf模板引擎的整合还有运行原理(主要是自动默认配置star...

4479
来自专栏芋道源码1024

注册中心 Eureka 源码解析 —— Eureka-Server 启动(一)之 ServerConfig

本文主要基于 Eureka 1.8.X 版本 1. 概述 2. EurekaServerConfig 2.1 类关系图 2.2 配置属性 2.3 Default...

3825
来自专栏SpringSpace.cn

基于Spring Boot 2.0 及MongoDB 3.6.2 实现的简单文件共享服务器 顶

近期研究学习Spring Boot 2.0及MongoDB期间,尝试用Reactive模式实现了一个简单的文件共享服务器,可用于家庭及小型组织内部的文件共享,目...

2812
来自专栏Ken的杂谈

CentOS 7 下Jenkins安装部署教程

Jenkins是一个开源的支持自动化构建、部署等任务的平台。基本上可以说是持续集成(CI)、持续发布(CD)不可或缺的工具。

4732
来自专栏Python爬虫与数据挖掘

在Windows下如何创建指定的虚拟环境

前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下)。今天小编给大家分享一下,...

791

扫码关注云+社区

领取腾讯云代金券