`
liuyinhuan
  • 浏览: 27345 次
  • 性别: Icon_minigender_1
  • 来自: 广东中山
文章分类
社区版块
存档分类
最新评论

初识Struts(八)----Struts国际化I18N

阅读更多

Struts 框架很好的支持国际化, 主要从静态硬编码和动态文本消息两方面来实现的。

 

一、struts 硬编码国际化问题

1 、建立各版本的资源文件

 

资源文件是 用于适应多语言环境,随着系统的语言环境的变化,读取不同的资源文件,显示对应的语言。 propertes 文件特点就是简单 , key=value 存放一组配置,通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个 .property 文件就可以了,不用再去修改源代码。资源文件的命名规则 baseName+Locale.properties, 一个项目的 baseName 必须相同,如中文版的资源文件为 MessageResources_zh_CN.properties, 英文版的资源文件为 MessageResources_en_US.properties, 还应该提供一个默认资源文件 MessageResources.properties 当找不到匹配版本的资源文件时就访问该文件。

各资源文件的代码为:

  MessageResources.properties

# -- standard errors --

errors.header=<UL>

errors.prefix=<LI><font color="red">

errors.suffix=</font></LI>

errors.footer=</UL>

 

user.title=User Login

user.username=User Name

user.password=Password

user.button.login=Login

 

 

user.login.success={0},Login Success

user.login.userNameNotFound=User Name Not Found,Name=[{0}]

user.login.passwordError=Password Error

user.login.error=Login Error!!!!!!

user.login.success=Login Success!!!!!

  MessageResources_zh_CN.properties * 注意:需要用 jdk 自带的工具 nativa2ascii.exe( 或集成 propertiesEditor 插件到 MyEclipse) 将中文转换为 Unicode 编码 , 下面是用 propertiesEditor 插件处理的:

# -- standard errors --

errors.header=<UL>

errors.prefix=<LI><font color="red">

errors.suffix=</font></LI>

errors.footer=</UL>

 

user.title= 用户登录

user.username= 用户名

user.password= 密码

user.button.login= 登录

 

user.login.success={0}, 登录成功!

user.login.userNameNotFound= 用户名不存在,用户名 =[{0}]

user.login.passwordError= 密码错误

user.login.error= 登录失败!!!

user.login.success= 登录成功!!!!

  MessageResources_en_US.properties

# -- standard errors --

errors.header=<UL>

errors.prefix=<LI><font color="red">

errors.suffix=</font></LI>

errors.footer=</UL>

 

user.title=User Login

user.username=User Name

user.password=Password

user.button.login=Login

 

user.login.success={0},Login Success

user.login.userNameNotFound=User Name Not Found,Name=[{0}]

user.login.passwordError=Password Error

user.login.error=Login Error!!!!!!

user.login.success=Login Success!!!!!

 

    2 、配置:在struts-config.xml 文件中导入资源文件:( 其中res 是包名)

  <message-resources parameter="res.MessageResource"/>

                       

    3 、在jsp 页面中用<bean:message/> 标签引用资源文件中的key 值:login.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"

    pageEncoding="GB18030"%>

<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<title><bean:message key="user.title"/></title>

</head>

<body>

   <h1><bean:message key="user.title"/></h1>

   <form action="login.do" method="post">

      <bean:message key="user.username"/> <input type="text" name="username"><br>

      <bean:message key="user.password"/>:<input type="password" name="password"><br>

      <input type="submit" value="<bean:message key="user.button.login"/>">

   </form>

</body>

</html>

   

    这样就实现了Struts 的硬编码国际化,当客户端本地语言环境为中文就显示中文:

 
  为英文或其他语言就显示英文:

 

    4 、利用struts 中默认将Locale 信息设置到session 中的特性,可完成采用编程方式切换语言设置:

 

  Action 中的实现代码为:

                         String lang = request.getParameter("lang");

                        

                         Locale currentLocale = null;

                         if("zh".equals(lang)){

                                        currentLocale = new Locale("zh","CN");

                         }else if("en".equals(lang)){

                                        currentLocale = new Locale("en","US");

                         }

                        

                         request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);

                        

                        

                         return mapping.findForward("login");

 

           

  二、  struts 动态文本国际化处理步骤:

          1 、 在各资源文件中加入资源( 如上面的资源文件代码)

 

           2 、 在Action 中创建国际化消息:

ActionMessages messages = new ActionMessages();

ActionMessage message = new ActionMessage("user.login.success",username);

messages.add("loginSuccess", message);

  上面的ActionMessage 消息必须addActionMessages 消息集中

 

          3 、 传递国际化消息, 调用savaMessages 传递普通消息,调用saveErrors 传递错误消息到相应的作用范围(request):

this.saveMessages(request, messages);

this.saveErrors(request, messages);

<!----><!----> <!---->

          4、在Jsp页面显示国际化信息:

     * 用<html:messages/>标签显示(可显示普通消息和错误消息,默认为错误消息,需设置message=true才显示普通消息):

    <html:messages id="mes" message="true" property="loginSuccess">
       <bean:write name="mes"/>
    </html:messages>

    * 用<html:errors/>标签显示错误消息:

   <html:errors />

 

到此,Struts的国际化问题基本解决。。。。。

1
0
分享到:
评论

相关推荐

    初识Firebug全文--Firebug的使用.mht

    初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用...

    初识 Struts2 第一节

    Struts2是Java Web开发中一个非常重要的框架,它基于...在实际开发中,Struts2还支持插件、国际化、注解配置等多种特性,使得复杂Web应用的构建更加便捷。学习和掌握Struts2,对于提升Java Web开发能力具有重要意义。

    第二课《初识好朋友--计算机》教学设计.pdf

    《初识好朋友--计算机》是一堂面向初学者的IT入门课程,主要目的是让学生掌握计算机的基础知识,包括计算机的组成、开关机方法,并初步理解机房的基本要求。这堂课的教学设计紧密围绕技术主题,旨在激发学生的兴趣,...

    视频压缩标准-初识-详解-国标

    ### 视频压缩标准-初识-详解-国标 #### 视频压缩标准初识 视频压缩技术是一项至关重要的技术,它使得高质量的视频内容能够通过有限的存储空间和带宽资源进行高效传播。随着互联网的发展,视频内容的需求急剧增加,...

    初识Spring框架-资料.rar

    AOP为程序提供了一种模块化的方式,将关注点分离到单独的“切面”中。在Spring中,AOP用于实现如日志记录、事务管理等横切关注点,使得这些功能可以在不修改原有业务逻辑的情况下被插入到代码中。 4. **Spring MVC...

    初识Hive--精华

    1、hive的产生背景 2、hive的定义 3、hive的本地安装 4、hive的基本类型 5、hive的基本命令

    第10课-初识画图软件-教学设计.pdf

    ### 第10课-初识画图软件-教学设计 #### 教学目标 - **知识与技能**: - 学会启动画图软件,理解其主要功能,并熟悉画图软件的操作界面。 - 掌握调整画布大小的方法。 - 使用画图软件绘制“云”和“雨”,并扩展...

    struts2学习笔记

    #### 二、初识Struts2配置文件 **1. web.xml文件** - 主要配置StrutsPrepareAndExecuteFilter,这是一个过滤器,负责初始化整个Struts框架并处理所有请求。 - 可以通过初始化参数来指定加载额外的XML配置文件,...

    初识人工智能--决策树算法.pdf

    在初识人工智能的过程中,理解决策树算法至关重要,因为它易于理解,可解释性强,同时在处理分类问题时表现出良好的效果。 首先,决策树由内部节点(表示属性测试)、分支(代表特定属性的输出)和叶节点(代表类别...

    Struts2之模型驱动及分层架构初识案例struts004

    本案例“Struts2之模型驱动及分层架构初识”将深入探讨Struts2中的模型驱动模式和分层架构的概念及其应用。通过实践案例struts004,我们可以更直观地理解这些关键概念。 首先,让我们来了解**模型驱动**。在Struts2...

    第01章 初识Cocos2d-X.zip

    这个“第01章 初识Cocos2d-X.zip”压缩包内容可能包含了对Cocos2d-X的基础介绍和入门教程,帮助初学者了解并开始使用这个框架。 1. **Cocos2d-X概述** Cocos2d-X是Cocos2d-x项目的一部分,由C++编写,支持iOS、...

    Struts2之Servlet API及单元测试初识案例struts005

    1. **过滤器(Filter)**:Struts2的核心过滤器`StrutsPrepareAndExecuteFilter`负责初始化Action上下文,处理请求并执行Action。它会解析请求参数,根据配置文件确定Action,然后调用Action的execute方法。 2. **...

    1.初识Java作业-1

    Java 语言以其“一次编译,到处运行”的特性在编程界占据着重要地位。这是因为Java程序首先被编译成与平台无关的字节码(.class文件),这些字节码随后在任何支持Java的平台上由Java虚拟机(JVM)执行。...

    《初识windows--XP》参考教案1.doc

    windows

    初识移动互联网-学习记录.docx

    【初识移动互联网】 移动互联网,顾名思义,是指通过移动通信设备(如智能手机、平板电脑)接入互联网,提供各种服务和应用的领域。它的发展速度极快,改变了人们的生活方式,工作模式,以及信息获取和交流的方式。...

    初识 Spring Security - v1.1.pdf

    ### 初识 Spring Security #### 一、Spring Security 概述 **Spring Security**是一种广泛应用于Java企业级项目中的安全框架,它基于Spring AOP(面向切面编程)和Servlet过滤器来提供全面的安全解决方案。该框架...

    struts2超详细笔记

    #### 二、初识struts2配置文件 struts2的配置主要包括以下几个文件: **(1)web.xml文件** - **StrutsPrepareAndExecuteFilter**:负责初始化整个struts框架,并处理所有请求。可以设置初始化参数,如指定加载...

    01 - 初识Java ASM - 简书1

    Java ASM 是一个强大的字节码操控和分析框架,主要用于动态生成和修改Java字节码。这个库被广泛应用于创建元编程框架、代码分析工具、性能监控工具以及测试框架等领域。ASM能够直接操作字节码,使得开发者可以实现对...

Global site tag (gtag.js) - Google Analytics