【Struts2学习笔记(12)】Struts2国际化

(1)准备资源文件,资源文件的命名格式例如以下:

baseName_language_country.properties

baseName_language.properties

baseName.properties

当中baseName是资源文件的基本名。我们能够自己定义,但language和country必须是java支持的语言和国家。如:

中国大陆: baseName_zh_CN.properties

美国: baseName_en_US.properties

如今为应用加入两个资源文件:

第一个存放中文:lc_zh_CN.properties

内容为:welcome=欢迎来到乐程

第二个存放英语(美国): lc_en_US.properties

内容为: welcome=welcome to lc

(注:对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件。

命令的使用方式例如以下:

native2ascii  源文件.properties  目标文件.properties

可是眼下的编译器都支持直接编辑了)

(2)配置全局资源与输出国际化信息

当准备好资源文件之后,我们能够在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件,例如以下:

<constant name="struts.custom.i18n.resources" value="lc" />

配置文件例如以下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<!-- 定义所有范围的资源文件    value是 资源文件的基本名 -->
	<constant name="struts.custom.i18n.resources" value="lc" />

	<package name="person" namespace="/person" extends="struts-default">
		<action name="manage" class="cn.lc.action.PersonManageAction">
			<result name="message">/WEB-INF/page/message.jsp</result>
		</action>
	</package>
</struts>

lc为资源文件的基本名。

(3)訪问国际化资源

1.在JSP页面中使用<s:text name=“”/>标签输出国际化信息:

<s:text name=“welcome”/>。name为资源文件里的key

  <body>
    <s:text name="welcome" />
  </body>

2.在Action类中,能够继承ActionSupport。使用getText()方法得到国际化信息。该方法的第一个參数用于指定资源文件里的key。

在表单标签中,通过key属性指定资源文件里的key。如:

public class PersonManageAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		ActionContext.getContext().put("message", this.getText("welcome")); //存放在request域中
		return "message";
	}
}

message视图代码:

  <body>
   ${message }
  </body>

(4)输出带占位符的国际化信息

当资源文件里含有占位符时

1.在jsp页面中输出带占位符的国际化信息

<s:text name="welcome">
  	 <s:param><s:property value="realname"/></s:param>
	<s:param>学习</s:param>
</s:text>

2.在Action类中获取带占位符的国际化信息。能够使用getText(String key, String[] args)或getText(String aTextName, List args)方法。

public class PersonManageAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		ActionContext.getContext().put("message", this.getText("welcome",new String[]{"liming","study"})); //填充占位符
		return "message";
	}
}

(5)包范围资源文件

1.在一个大型应用中。整个应用有大量的内容须要实现国际化。假设我们把国际化的内容都放置在全局资源属性文件里,显然会导致资源文件变的过于庞大、臃肿,不便于维护。这个时候我们能够针对不同模块。使用包范围来组织国际化文件。

2.方法例如以下:

在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都能够訪问该资源。当查找指定key的消息时。系统会先从package资源文件查找。当找不到相应的key时,才会从常量struts.custom.i18n.resources指定的资源文件里寻找。

3.用法是一样的 知识系统查找的顺序不同。

(6)Action范围资源文件

1.我们也能够为某个action单独指定资源文件,方法例如以下:

在Action类所在的路径,放置ActionClassName_language_country.properties资源文件,ActionClassName为action类的简单名称。

2.当查找指定key的消息时。系统会先从ActionClassName_language_country.properties资源文件查找,假设没有找到相应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包。

假设还没有找到相应的key。最后会从常量struts.custom.i18n.resources指定的资源文件里寻找。

(7)JSP中直接訪问某个资源文件

1.前边的使用我们都是先要配置之后才干够使用国际化资源的,那么可不能够不配置就能够使用?答案是肯定的。

2.struts2为我们提供了<s:i18n>标签,使用<s:i18n>标签我们能够在类路径下直接从某个资源文件里获取国际化数据,而无需不论什么配置:

<s:i18n name="lc">  <!-- lc为类路径下资源文件的基本名。 -->
    <s:text name=“welcome”/>
</s:i18n>

3.假设要訪问的资源文件在类路径的某个包下。能够这样訪问:

<s:i18n name=“cn/lc/action/package">
  <span style="white-space: pre;">	</span><s:text name="welcome">
  <span style="white-space: pre;">		</span><s:param>小张</s:param>
  <span style="white-space: pre;">	</span></s:text>
</s:i18n>

上面訪问cn.lc.action包下基本名为package的资源文件 也能够是PersonManageAction 博鳌是訪问的是该Action的PersonManageAction下边的资源文件。

注:转载请注明出处!

时间: 2024-10-05 04:09:35

【Struts2学习笔记(12)】Struts2国际化的相关文章

java学习笔记(12) —— Struts2 通过 xml /json 实现简单的业务处理

XML 1.引入dom4j-2.0.0.jar 2.引入jquery-1.8.2.js 3.新建common.js getInfo = function(){ $.post("getXmlAction.action",{name:$('#name').val()},function(ret,status){ if("success" == status) var id = $(ret).find("id").text(); var age = $

struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式

方法一:通过ActionContext访问SerlvetAPI,这种方式没有侵入性 Action类部分代码 import com.opensymphony.xwork2.ActionContext; public String execute() throws Exception { if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){ //获取Ma

struts2学习笔记2 -struts2的开发步骤和工作原理

struts2的开发步骤: 1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form) 2.开发action类,struts2对action并没有过多的要求,只要求: a 推荐实现action接口,或继承actionsupport类 b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法 c 该action类应该有无参数构造器 3.配置action类 所有action都需要放在package里配置. <action>元素有如下属性: name 指定该act

struts2 学习笔记

Struts2 学习笔记 在使用J2EE编写网站的时候,我们经常会使用Struts2框架.Struts2的好处就是许多东西已经被封装好了,我们只需要包含给定的jar文件,就能够调用相应的方法和标签.下面我将简要介绍一下Struts2的使用和特点: 一.搭建Struts2的环境:(主要分为三个部分:包含lib文件.web.xml改写.新建一个Struts.xml) 1.打开myeclise软件,新建一个Dynamic web project,在WebContent/WEB-INF文件夹下的lib文

struts2学习笔记(三)—— 在用户注册程序中使用验证框架

实现目标: 1.使用验证框架对用户注册信息进行验证 2.验证用户名.密码.邮箱不能为空 3.验证用户名.密码长度 4.验证邮件地址格式 具体实现 一.Struts2应用的基础配置 这里不做详细阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件中 1.查看用户注册程序中的所有页面,找到所有可以显示的文本内容,将它们分离出来放到资源文件中. 2.与相关的Action类同名,以.preperties为扩展名,与Action类位于同一个包中,只能由该Action访问 R

Struts2学习笔记(九):Strut2通用标签详解

本节主要介绍Strus2中的通用标签,主要有<s:url>, <s:set>, <s:push>, <s:if>, <s:elseif>, <s:else>, <s:iterator>, <s:sort>, <s:date>, <s:a>等几个标签的具体用法,仍然采用代码加注释的形式进行说明,希望能对大家有帮助. 刚入门的朋友阅读本文前,请阅读: Struts2学习笔记(六):值栈(va

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

struts2学习笔记(8)-------struts2的ajax支持

struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直接看例子: public class LoginAction { private String user; private String pass; private InputStream inputStream; public InputStream getInput(){ return inpu

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja

Struts2 学习笔记(概述)

Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并实现应用的功能.通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息.用户信息等:而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等. 封装应用状态:某些应用数据封装起来,使得视图只能通过接口获取对应的数据 响应状态查询:对应用的状态改变进行处理 暴露应用功能:暴露接口 通