Strurs2 国际化I18N
一:基础配置
1. 要使用Struts2来实现国际化的支持,同样先来准备国际化信息资源文件
message.properties
message_zh_CN.properties
message_en_US.properties
2.设置Struts2引用国际化信息资源文件,
(方法1):在struts.xml中设置一个常量:
<constant name="struts.custom.i18n.resources" value="message"/>
(方法二):在struts.properties中配置如下参数
struts.custom.i18n.resources= message
3.在jsp中访问国际化资源
可以直接选用Struts2的text标签来访问国际化信息,其中text标签的name属性就是要引用哪个key。
1. <%@ taglib prefix="s" uri="/struts-tags" %>
2. <s:text name="labela"/>
二:指定语言信息的不同方式
方法一:指定浏览器使用的语种
首先要去掉struts.xml或struts.properties文件中配置的如下参数
1. <constant name="struts.locale" value="zh_CN"/>
2. <constant name="struts.i18n.encoding" value="gb2312"/>
设置浏览器语言:工具==》Internet选项==》语言,通过添加、上、下移操作,将预使用的语言放在最上边
则重新访问网页,则会使用当前浏览器设置的语言对应的国际化配置信息。
方法二:struts2常量设置
在struts.xml中加上struts.locale这个常量
<constant name="struts.locale" value="zh_CN"/>
这时候,会发现无论怎么修改浏览器的语言设置,Struts2都会去访问中文信息了
方法三:请求加上request_locale=zh_CN参数
注意:该请求必须要经过struts的i18n拦截器,否则无效
也可以直接设置session
Locale local = new Locale("zh", "CN");
session.setAttribute("WW_TRANS_I18N_LOCALE", local);
i18n拦截器在Action运行之前会检查请求中是否包含了一个叫做“request_locale”的参数,如果存在此参数,则会用它的值建立一个Locale对象,并用这个Locale对象去覆盖Struts2的常量设置和浏览器的语言设置。除此之外,i18n拦截器还会把这个Locale对象放到名为WW_TRANS_I18N_LOCALE的Session属性中去,而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置。因此,只需要传入一次request_locale参数,session就会记住用户的选择,整个网站就会都变成用户选择的语言了。
三种方式的覆盖方式
优先级如下:
用户指定参数>struts.xml中配置的常量>浏览器设置。
并且用户参数指定的方式,只需要设置一次,在整个session生命周期内都使用同样的语言。
S2SH项目中Action、Service、Dao各层如何获得struts2的国际化资源
S2SH项目中Action、Service、Dao各层如何获得struts2的国际化资源
Action:action可以继承ActionSupport,可以直接调用getText()方法获得
Service、Dao 层:无法通过Action的方法获得Struts2的i18n资源文件中的内容
思考:因为同一个session的国际化相同,可以借助java.util. ResourceBundle资源包,在session创建时,根据语言信息创建ResourceBundle对象,然后将其存放到session中,以后就可以通过session获得国际化资源信息。
主要代码如下
1.创建放入session中的对象
public class SessionData {
private String language;
//国际化资源包
private ResourceBundle rb;
public void setLanguage(String language) {
Locale locale = null;
if ("zh".equals(language)) {
locale = new Locale("zh", "CN");
} else {
locale = new Locale("en", "US");
}
ResourceBundle rb = ResourceBundle.getBundle("sourceName", locale);
this.rb = rb;
this.language = language;
}
//getter方法略......
}
2.将国际化资源信息通过ResourceBundle资源包放入当前session中
public String login (){
//......
String language = request.getParameter("local");
//可以获得语言信息或者可以获得Local信 息(假如用local对象,则上边setLanguage()方法适当调整下即可)
SessionData sessionData =
(SessionData)request.getSession ().getAttribute (“SessionData”);
if (sessionData == null) {
sessionData = new SessionData();
request.getSession().setAttribute(“SessionData”, sessionData);
}
//这句代码将资源文件信息放入到session中
sessionData.setLanguage(loc.getLanguage());
//......
}
3.编写公用方法,获得国际化资源文件的指定键的内容
public class I18nUtil {
//根据键key获得国际化资源文件sourceName中的值
public static String getText (String key) {
String value = "";
SessionData sd = (SessionData) ServletActionContext.getRequest()
.getSession().getAttribute(“SessionData”);
value = sd.getRb().getString(key);
return value;
}
}
4.service、Dao层使用
I18nUtil.getExceptionText(key)
<!--EndFragment-->
相关推荐
在"struts_i18n1_login"这个实例中,我们将探讨如何利用Struts框架实现国际化(i18n)功能,并创建一个基本的登录界面。国际化是一个重要的特性,它允许应用程序根据用户的语言和地区提供定制化的用户界面。 首先,...
8. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)实现不同语言的切换,提供更好的用户体验。 9. **异常处理**:Struts2允许定义全局和Action级别的异常处理策略...
7. **国际化(i18n)支持**:Struts2提供了国际化的支持,你可以创建资源文件,根据用户的语言环境提供不同的显示内容。 8. **Ajax支持**:Struts2可以很方便地与jQuery或其他JavaScript库结合,实现部分页面刷新,...
在压缩包中,`struts2.xls`可能是包含Struts2学习笔记的电子表格,详细讲解了框架的各个方面,包括配置、拦截器、结果类型等。`struts-2.3.15.3`很可能是Struts2的特定版本库,包含所有必要的JAR文件和文档,可供...
- **Struts2与i18n(internationalization)**:为多语言支持提供便利,如struts2-i18n-plugin,通过资源文件实现内容的国际化。 - **Tiles2整合(struts2-tiles-plugin)**:利用Tiles2来定义和管理页面布局,使得视...
8. **国际化(Internationalization, i18n)**:Struts2支持多语言,可以方便地实现应用程序的国际化。 9. **Ajax支持**:Struts2提供了与Ajax交互的能力,可以创建部分页面更新的应用,提高用户体验。 学习Struts...
在深入探讨Struts2的学习笔记之前,先来理解它的核心概念。 **1. Struts2依赖的JAR包** Struts2的运行离不开一系列的依赖库,包括: - `struts2-core-2.1.6.jar`:这是Struts2的核心库,包含了Struts2框架的主要...
8. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)实现内容的国际化。 9. ** strut2-dojo-plugin**:Struts2还提供了Dojo工具集,帮助开发者快速创建具有丰富...
### Struts2学习笔记知识点梳理 #### 一、Struts2框架概述 - **背景**:Struts2作为Struts1的升级版本,融合了WebWork框架的优点,由Apache基金会维护,是一个开源、免费的MVC框架。尽管随着时间的推移,Spring MVC...
这篇学习笔记和测试源代码着重探讨了Struts2的国际化(i18n)功能,这对于创建支持多语言环境的应用程序至关重要。 在Java web开发中,国际化是一个关键特性,它允许应用为不同地区的用户提供本地化的界面和内容。...
10. **国际化(i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)来实现不同语言的文本显示。 通过阅读这份“超好的Struts2 pdf 文档”,开发者不仅可以掌握Struts2的基本使用,还能深入理解其设计...
**国际化资源文件**:为了支持多语言环境,可以通过在`struts.properties`文件中配置`Struts.custom.i18n.resources`属性来指定资源文件。资源文件可以分为全局资源文件、包级别的资源文件和类级别的资源文件。当...
8. **国际化(Internationalization, i18n)与本地化(Localization, l10n)** - Struts2提供对多语言环境的支持,通过资源包(Resource Bundles)管理不同语言的文本和消息。 9. **异常处理(Exception Handling)** - ...
struts.custom.i18n.resources Location of additional localization properties files to load 加载附加的国际化属性文件(不包含.properties后缀) struts.custom.properties Location of additional ...
### Struts学习笔记详解 #### 一、Struts框架概览与编码设置 在学习Struts框架时,首要关注的是其编码配置。如代码片段所示,`struts.i18n.encoding`常量被设置为`UTF-8`,这确保了国际化(I18N)资源文件的正确...
7. **国际化(i18n)**:Struts2支持多语言,可以通过资源包文件(.properties)管理不同语言的文本,为用户提供本地化的界面。 通过Struts2Demo2,你可以学习到如何组织和配置一个Struts2项目,理解MVC设计模式在...