【Struts2系列】Struts2 国际化资源文件的机制原理

【Struts2国际化资源文件定义的3种范围方法】

1)全局的国际化资源文件,对所有的Action和View都有效

定义方式:

在struts.xml中增加全局资源文件定路径定义:
        <constant name="struts.custom.i18n.resources" value="globalMessage"></constant>

对应的资源文件为classpath根目录位置:

globalMessage.properties,

globalMessage_en.properties,

globalMessage_cn_ZH.properties

2)包范围的国际化资源文件,对package目录下的Action和View有效

不需要额外的配置,只需要将资源文件定义为 :

package.properties,

package_en.properties,

package_cn_ZH.properties,

并放在对应classpath所在的package目录下

3)Action范围的国际化资源文件,只对某个Action以及Action对应的View有效,资源文件已具体的action类名命名,

如:RegisterAction.class 对应的资源文件为

RegisterAction.properties,

RegisterAction_en.properties,

RegisterAction_cn_ZH.properties;

资源文件与Action类放在同一目录位置,不需要额外配置即可生效;

【Struts2国际化资源的引用方式】

1)在View(JSP)文件中的引用方式

使用Struts2标签

  • <s:text name="label.helloWorld"/>输出国际化label.helloWorld为资源文件中定义的key;
  • <s:property value="%{getText(‘label.helloWorld‘)}"/>
  • <s:textfield name="name" key="label.helloWorld"/>
            <s:textfield name="name" label="%{getText(‘label.helloWorld‘)}"/>
  • 带参数方式

    <s:text name="label.hello">
                   <s:param>Kypulo</s:param>
            </s:text>
         使用带参数的资源.<s:param>可以替换label.hello=hello {0}中的{0}

  • 使用校验框时,提示信息可以国际化
       <field name="userName">
       <field-validator type="requiredstring">
        <message key=”userName.required”> </message>
       </field-validator>
    </field>

2)在Action类中的引用方式

Action的国际化主要是通过getText的三种方法实现的:

public String getText(String aTextName)

public String getText(String aTextName,List args)

       public String getText(String aTextName,String defaultValue)

如:String str2 = getText("label.hello",new String[]{"kypulo"});

时间: 2024-07-31 14:26:16

【Struts2系列】Struts2 国际化资源文件的机制原理的相关文章

*_zh_CN.properties 国际化资源文件 struts 防乱码等

国际化资源文件在struts中须要写以下代码: <!-- 设置Web应用的默认Locale为zh_CN --> <constant name="struts.locale" value="zh_CN" /> <!-- 设置Struts2应用的国际化资源文件,多个文件中间可用逗号分隔 --> <constant name="struts.custom.i18n.resources" value="

Struts2的国际化(一)-国际化资源文件的配置及国际化信息的访问

一.概述: 1)国际化是一种技术:在程序设计领域,把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 2)本地化是一个动作:与国际化对应的是本地化,指让一个具备国际化支持的应用程序支持某个特定的地区. 3)Struts2 国际化是建立在 Java 国际化基础上的: >为不同国家/语言提供对应的消息资源文件 >Struts2 框架会根据请求中包含的Locale 加载对应的资源文件 >通过程序代码取得该资源文件中指定 key 对应的消息 二.如何配置国际化

Struts2的国际化(二)-利用超链接实现动态加载国际化资源文件

原理:程序是根据Locale来确定国际化资源文件,因此关键之处在于知道 Struts2 框架是如何确定 Local 对象的 ! 由于Struts2 使用 i18n 拦截器处理国际化,并且将其注册在默认的拦截器中,因此,可以通过阅读 I18N 拦截器知道. 具体确定 Locale 对象的过程: > Struts2 使用 i18n 拦截器 处理国际化,并且将其注册在默认的拦截器栈中 > i18n拦截器在执行Action方法前,自动查找请求中一个名为 request_locale 的参数. 如果该参

SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件

关于SpringMVC验证框架Validation的使用方法,不是本篇的重点,可参见博文SpringMVC介绍之Validation 在使用Validation时,一定有朋友遇到过一个问题,那就是:无法传递参数到国际化资源文件properties错误描述中. 举个例子: User类中 @NotEmpty(message="{password.empty.error}") private String password; 资源文件validation_zh_CN.properties中为

java util工具读取国际化资源文件

Locale ResourceBundle Locale读取资源文件 package yycg.util; import java.io.Serializable; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.ResourceBundle;

【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源热更新 Android热更新开源项目Tinker源码解析系类之三:so热更新 转载请标明本文来源:http://www.cnblogs

Java国际化资源文件的选择

(一)在Java环境下有以下资源文件: message_zh_CN.properties message_zh_TW.properties message_zh.properites message.properties 如果Locale为zh_CN,查找资源文件的顺序为: message_zh_CN.properties message_zh.properites message.properties 如果上述三个资源文件都不存在,则抛出异常,不会使用message_zh_TW.propert

菜鸟教程之工具使用(十九)——国际化资源文件开发凶器MultiProperties

最近要做一个多语言的东西,大概包含中.繁.日.英.韩几种语言.这样一来就需要编写多个资源文件,不仅工作量繁重,而且容易出错.今天介绍一款非常好用的工具给大家--MultiProperties. MultiProperties Editor 是一个用来编辑 properties 或者是 ResouceBundle 资源文件的 Eclipse 插件,支持多语言同时编辑.它的原理流程图如下: MultiProperties文件其实就是对XML的一种封装格式,可以转换成Java的properties文件

Java IO流 之 ResourceBundle 读取国际化资源文件

http://www.verejava.com/?id=16994867037422 /** java.util.ResourceBundle : 用来读取资源文件的类(*.properties) 资源文件里面的内容是Key=value 键值对 注意: 1. 根据Locale来读取资源文件时,如果没有找到以 baseName_language_country.properties 形式定义的资源文件, 就从 baseName.properties 资源文件读取 */ import java.ut