`
黑夜星空哈
  • 浏览: 7383 次
社区版块
存档分类
最新评论

struts2 i18n学习记录

阅读更多

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中访问国际化资源

可以直接选用Struts2text标签来访问国际化信息,其中text标签的name属性就是要引用哪个key

1. <%@ taglib prefix="s" uri="/struts-tags" %>   

2. <s:text name="labela"/>

 

二:指定语言信息的不同方式

方法一:指定浏览器使用的语种

首先要去掉struts.xmlstruts.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参数

注意:该请求必须要经过strutsi18n拦截器,否则无效

也可以直接设置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_LOCALESession属性中去,而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置。因此,只需要传入一次request_locale参数,session就会记住用户的选择,整个网站就会都变成用户选择的语言了。

 

三种方式的覆盖方式

优先级如下:

用户指定参数>struts.xml中配置的常量>浏览器设置。

并且用户参数指定的方式,只需要设置一次,在整个session生命周期内都使用同样的语言。

 

S2SH项目中ActionServiceDao各层如何获得struts2的国际化资源

S2SH项目中ActionServiceDao各层如何获得struts2的国际化资源

Actionaction可以继承ActionSupport,可以直接调用getText()方法获得

ServiceDao 层:无法通过Action的方法获得Struts2i18n资源文件中的内容

思考:因为同一个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.serviceDao层使用

I18nUtil.getExceptionText(key)

 

<!--EndFragment-->
  • 大小: 50.3 KB
分享到:
评论

相关推荐

    struts_i18n1_login

    在"struts_i18n1_login"这个实例中,我们将探讨如何利用Struts框架实现国际化(i18n)功能,并创建一个基本的登录界面。国际化是一个重要的特性,它允许应用程序根据用户的语言和地区提供定制化的用户界面。 首先,...

    struts2四天的学习笔记

    8. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)实现不同语言的切换,提供更好的用户体验。 9. **异常处理**:Struts2允许定义全局和Action级别的异常处理策略...

    Struts2的Java专题学习网

    7. **国际化(i18n)支持**:Struts2提供了国际化的支持,你可以创建资源文件,根据用户的语言环境提供不同的显示内容。 8. **Ajax支持**:Struts2可以很方便地与jQuery或其他JavaScript库结合,实现部分页面刷新,...

    struts2入门学习源码

    在压缩包中,`struts2.xls`可能是包含Struts2学习笔记的电子表格,详细讲解了框架的各个方面,包括配置、拦截器、结果类型等。`struts-2.3.15.3`很可能是Struts2的特定版本库,包含所有必要的JAR文件和文档,可供...

    struts2.x所需要的支持类库,内附struts2的学习资料

    - **Struts2与i18n(internationalization)**:为多语言支持提供便利,如struts2-i18n-plugin,通过资源文件实现内容的国际化。 - **Tiles2整合(struts2-tiles-plugin)**:利用Tiles2来定义和管理页面布局,使得视...

    struts2 学习资料

    8. **国际化(Internationalization, i18n)**:Struts2支持多语言,可以方便地实现应用程序的国际化。 9. **Ajax支持**:Struts2提供了与Ajax交互的能力,可以创建部分页面更新的应用,提高用户体验。 学习Struts...

    struts2学习笔记

    在深入探讨Struts2的学习笔记之前,先来理解它的核心概念。 **1. Struts2依赖的JAR包** Struts2的运行离不开一系列的依赖库,包括: - `struts2-core-2.1.6.jar`:这是Struts2的核心库,包含了Struts2框架的主要...

    Struts2_学习笔记.zip

    8. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)实现内容的国际化。 9. ** strut2-dojo-plugin**:Struts2还提供了Dojo工具集,帮助开发者快速创建具有丰富...

    Struts2学习笔记

    ### Struts2学习笔记知识点梳理 #### 一、Struts2框架概述 - **背景**:Struts2作为Struts1的升级版本,融合了WebWork框架的优点,由Apache基金会维护,是一个开源、免费的MVC框架。尽管随着时间的推移,Spring MVC...

    struts2的学习笔记+测试源代码

    这篇学习笔记和测试源代码着重探讨了Struts2的国际化(i18n)功能,这对于创建支持多语言环境的应用程序至关重要。 在Java web开发中,国际化是一个关键特性,它允许应用为不同地区的用户提供本地化的界面和内容。...

    Struts2 Struts2 超好的Struts2 pdf 文档

    10. **国际化(i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)来实现不同语言的文本显示。 通过阅读这份“超好的Struts2 pdf 文档”,开发者不仅可以掌握Struts2的基本使用,还能深入理解其设计...

    魔乐科技Struts2.x框架笔记

    **国际化资源文件**:为了支持多语言环境,可以通过在`struts.properties`文件中配置`Struts.custom.i18n.resources`属性来指定资源文件。资源文件可以分为全局资源文件、包级别的资源文件和类级别的资源文件。当...

    struts2 API帮助文档

    8. **国际化(Internationalization, i18n)与本地化(Localization, l10n)** - Struts2提供对多语言环境的支持,通过资源包(Resource Bundles)管理不同语言的文本和消息。 9. **异常处理(Exception Handling)** - ...

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    struts.custom.i18n.resources Location of additional localization properties files to load 加载附加的国际化属性文件(不包含.properties后缀) struts.custom.properties Location of additional ...

    struts学习笔记

    ### Struts学习笔记详解 #### 一、Struts框架概览与编码设置 在学习Struts框架时,首要关注的是其编码配置。如代码片段所示,`struts.i18n.encoding`常量被设置为`UTF-8`,这确保了国际化(I18N)资源文件的正确...

    Struts2Demo2

    7. **国际化(i18n)**:Struts2支持多语言,可以通过资源包文件(.properties)管理不同语言的文本,为用户提供本地化的界面。 通过Struts2Demo2,你可以学习到如何组织和配置一个Struts2项目,理解MVC设计模式在...

Global site tag (gtag.js) - Google Analytics