struts2.1.6教程七、国际化

尽管国际化不是重点内容,但是也有必要了解它的使用。在struts2中国际化有三种级别:分别是针对某个Action的action级别,针对package的package级别,针对webapp的webapp级别。下面我们建立struts2i18n项目来演示国际化在struts2中的使用。

1.action级别下的国际化

步骤一、首先是建立login.jsp及LoginAction,由于它们经常使用,在此省去它们的代码。
步骤二、建立资源文件,由于LoginAction在com.asm包中,所以我们应在com.asm包下我们建立两个资源文件:一个是中文LoginAction_zh_CN.properties、一个是英文LoginAction_en_US.properties。注意它们的名字相对固定,前面与Action的名字相同,后面是语言和国家代码。

英文资源文件内容如下:

login_page=login page
login_username=userName
login_password=password
login_sex=sex
login_male=male
login_female=female
login_submit=login
login_reset=reset
login_suc=Welcome {0}

中文资源文件,需要特别注意:我们应使用Myeclipse自带的MyEclipse properties Editer编辑器来打开此资源文件,并在properties视图下进行编辑,这样它会把中文进行编码(我们切换到source视图下可以看到经编码后的中文)。 这一步非常重要,否则会出现乱码。

步骤三,修改login.jsp中的内容:

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
    <body>
    <s:text name="login_page"/><br>
    <s:label key="login_username"/>
        <s:form action="/login.action" method="post">
        <!--
            <s:textfield label="用户名" name="username" required="true" />
         -->
         <s:textfield label="%{getText(‘login_username‘)}" name="username" />

         <!--
            <s:password label="密码" name="password" required="true"/>
         -->
             <s:password key="login_password" name="password" />

         <!--
            <s:radio list="#{1:‘男‘,2:‘女‘}" value="1" label="性别" name="sex" />
         -->
         <s:radio list="#{1:getText(‘login_male‘),2:getText(‘login_female‘)}" value="1" label="%{getText(‘login_sex‘)}" name="sex" />
        <s:submit  key="login_submit" /> <s:reset key="login_reset"/>
        </s:form>
    </body>
</html>

说明:对资源文件的引用,我们采取了两种方式

:有的是通过在label中使用%{getText(‘资源文件中的key‘)}这样的形式,

有的是通过key=资源文件中的key这种形式。需要注意在radio标签中list对资源文件的引用。另外需要注意:

<s:text name="login_page"/><br>
<s:label key="login_username"/>

它们的区别:前面是纯文本,后者是一个块。我们可以通过查看login.jsp的源码来证明。

步骤四、当我们直接访问login.jsp时会报错,因为在login.jsp中用到了资源文件,而资源文件又依赖于LoginAction,所以我们只能通过此Action来跳到login.jsp。但是使用包范围、全局范围的资源文件时,可以直接访问login.jsp文件实现国际化。操作步骤如下:

首先在LoginAction中增加一个方法:

    public String doGoLogin() {
        return LOGIN;
    }

随后再在struts.xml中配置如下内容:

<package name="i18n" extends="struts-default" namespace="/">
        <action name="login" class="com.asm.LoginAction">
            <result name="success">success.jsp</result>
            <result name="login">login.jsp</result>
        </action>
</package>

接着再编写一个link.jsp页面,内容如下:

<a href="<%=request.getContextPath() %>/login!goLogin.action">登录</a>

直接访问Action中的方法 格式:doX(大写)xxx ---- ActionName!x(小写)xxx.action  注意此方法和前面二.7中相关方法的区别。 我们通过此Action跳转到login.jsp这样便能成功访问到login.jsp页面。
步骤五、在success.jsp中使用资源文件,主要内容如下

<s:text name="login_suc">
            <s:param value="%{username}"></s:param>
</s:text>

说明:在前面的资源文件中,我们配置了login_suc=Welcome {0},其中{0}表示占位参数,这里我们使用<s:param>来给此参数赋值。
步骤六、测试:在ie的internet选项中改变语言实现国际化的访问。

2.配置package的资源文件

3.app级别的资源文件

4.使用资源文件的原理

5.选择使用资源文件

时间: 2024-10-25 14:06:34

struts2.1.6教程七、国际化的相关文章

struts2官方 中文教程 系列七:消息资源文件

介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字段标签,并根据用户的语言环境将文本更改为特定的语言. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列七:消息资源文件  即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 信息资源属性文件 在Struts2 we

struts2官方 中文教程 系列十:Form标签

介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, form, textfield 控件和key属性.本教程将探索使用Struts 2 select, radio, checkbox, and checkboxlist form 控件 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列九:Debugging Struts 即 http://w

struts2官方 中文教程 系列十一:使用XML进行表单验证

在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让您可以内置到Struts 2框架的验证器. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列十一:使用XML进行表单验证  即 http://www.cnblogs.com/linghaoxinpian/p/6938720.html 下载本章节代码 为了使用户能够编辑存储在Person对

struts2官方 中文教程 系列九:Debugging Struts

介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截器.本文还讨论了如何设置日志级别以查看更多或更少的日志消息. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列九:Debugging Struts 即 http://www.cnblogs.com/linghaoxinpian/p/6916619.html 下载本章节代码 Configu

struts2官方 中文教程 系列十二:控制标签

介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项目:struts_basic2 本帖地址:struts2官方 中文教程 系列十二:控制标签 即 http://www.cnblogs.com/linghaoxinpian/p/6941683.html 下载本章节代码 struts2 if标签 我们在thankyou.jsp中添加如下代码: <s:i

Swift中文教程(七)--协议,扩展和泛型

Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(structs)都可采用协议(protocol): 1 class SimpleClass: ExampleProtocol { 2 var simpleDescription: String = "A very simple class." 3 var anotherProperty: Int

struts2 官方系列教程三:使用struts2 标签 tag

避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html 本教材假定你已完成了HelloWorld项目,你可以在 struts2 官方系列教程三:使用struts2 标签 tag 下载本章节的代码 在上一节教程中,我们在index.jsp中使用 url tag 创建了一个超链接hello.action 这节我们将探索struts2中其它tags Web应用程

struts2官方 中文教程 系列八:异常处理

在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列八:异常处理  即 http://www.cnblogs.com/linghaoxinpian/p/6915066.html 下载本章节代码 全局异常处理(Global Exception Handling) 使用Struts 2框架,您可以

ASP.NET 5系列教程(七)完结篇-解读代码

在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]")] 所有符合该模板类型的HTTP 请求都会被路由到该controller.在本例中, 路由的命名规范为对应Controller 的前缀,对于TodoController 类,路由模板为 “api/todo”. HTTP 方法 [HttpGet].[HttpPost]和[HttpDelete] 属性定义为 co