本文将通过一个详细的实例来展示Struts框架的国际化,使用的版本号是struts1.1。

案例:在一个页面上有一个下拉框,下拉框中有3个国家的语言选项,各自是“中文简体”、“繁体中文”、“英文”。

使用者通过对这三个选项的改变,而实现3种语言的变化。效果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FucWltYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

一、详细开发思想例如以下:

1)通过一个Action来获得JSP页面下拉框的选择项,依据这些选项来动态改变保存在Session中的Locale对象;

2)JSP页面的全部显示都会通过<bean:message>标签来读取资源配置文件,依据3种语言给出3个资源配置文件,资源配置文件的“键”不会改变,改变的是“值”。简体和繁体的“值”会使用UTF-8编码。

二、 部分代码例如以下:

a) 在Action中提供针对请求到来的Locale对象的动态变化,

package struts.sample.cap4.sample1.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping; import struts.sample.cap4.sample1.form.LanguageSelectForm; public class I18SelectAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LanguageSelectForm languageSelectForm = (LanguageSelectForm) actionForm;
Locale locale = null;
//依据页面的下拉选择得到Locale对象的内容
if (languageSelectForm.getLanguageSelect().equals("0")) {
locale = Locale.SIMPLIFIED_CHINESE;
}
if (languageSelectForm.getLanguageSelect().equals("1")) {
locale = Locale.US;
}
if (languageSelectForm.getLanguageSelect().equals("2")) {
locale = Locale.TRADITIONAL_CHINESE;
}
//将Locale对象的内容存放到Session中
request.getSession().setAttribute(Globals.LOCALE_KEY, locale);
return mapping.findForward("success");
} }

b) 提供一个ActionForm

该Action没有检验的方法。不过传递从页面到来的參数。

package struts.sample.cap4.sample1.form;

import org.apache.struts.action.ActionForm;

public class LanguageSelectForm extends ActionForm {
//下拉框的value
String languageSelect; public String getLanguageSelect() {
return languageSelect;
} public void setLanguageSelect(String languageSelect) {
this.languageSelect = languageSelect;
} }

c) JSP页面

JSP页面的部分仅仅有一个下拉框和一些提示信息。

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html>
<head>
<title>selectlanguage</title>
<script language="javascript">
function selectsubmit() {
if (document.all("languageSelect").value != "9999") {
document.langform.submit();
} }
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form name="langform" action="I18SelectAction.do" method="POST">
<table border="0" width="486" cellpadding="6">
<tr>
<td><bean:message key="form.languagefamily" /></td>
<td>
<select name="languageSelect" onchange="selectsubmit();">
<option value="9999" selected="selected">
<bean:message key="form.language999" />
</optioon>
<option value="0">
<bean:message key="form.language0" />
</optioon>
<option value="1">
<bean:message key="form.language1" />
</optioon>
<option value="2">
<bean:message key="form.language2" />
</optioon>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>

三、3个不同语言的资源配置文件

三种不同语言的配置文件分别为application_en_US.properties、application_zh_CN.properties、application_zh_TW.properties,相应了英文、中文简体和繁体中文3种不同的显示。

application_en_US.properties内容例如以下:

form.language0=SIMPLIFIED_CHINESE
form.language1=ENGLISH
form.language2=TRADITIONAL_CHINESE
form.language999=Please Choose your language
form.languagefamily=Language

application_zh_CN.properties的内容例如以下:

</pre><pre class="java" name="code">form.language0=\u7B80\u4F53\u4E2D\u6587
form.language1=\u82F1\u8BED
form.language2=\u7E41\u4F53\u4E2D\u6587
form.language999=\u8BF7\u9009\u62E9\u6240\u9700\u8BED\u8A00\u7684\u79CD\u7C7B
form.languagefamily=\u8BED\u8A00

application_zh_TW.properties的内容例如以下:

form.language0=\u7C21\u9AD4\u4E2D\u6587
form.language1=\u82F1\u8A9E
form.language2=\u7E41\u9AD4\u4E2D\u6587
form.language999=\u8ACB\u9078\u64C7\u6240\u9700\u8A9E\u8A00\u7684\u7A2E\u985E
form.languagefamily=\u8A9E\u8A00

完整代码地址:http://download.csdn.net/detail/sanqima/7479141

Struts框架的国际化的更多相关文章

  1. Struts框架2ActionError类 内部资料 请勿转载 谢谢合作

    ActionError类从不独立进行错误处理,它们总是被存储在ActionErrors对象中.ActionErrors对象保存ActionError类的集合以及它们特定的属性值,我们可以使用自己定义的 ...

  2. struts框架学习过程中的问题

    1,错误: java.lang.NullPointerException: Module 'null' not found.错误原因,struts运行需要的.jar文件拷贝不足,应该把它们加入到cla ...

  3. Struts框架 内部资料 请勿转载 谢谢合作

    Struts框架 struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发. 本章详细讨论struts架构.我们将看到struts是如何清晰地区分控制,事务逻 ...

  4. (28)初识struts框架

    案例剖析中介绍了一个自己写的mystruts框架,这里开始简单的认识struts框架. 1.先看一个简单的struts开发的例子来熟悉一下流程 Struts就是基于mvc模式的框架! (struts其 ...

  5. Struts 框架

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  6. 学习Struts框架系列(三):声明式异常处理

    在Struts1.X的版本中加入了对异常的处理Exception Handler,有了它我们可以不使用try/catch捕获异常,一旦出现了我们已经定义的异常,那么就会转到相应的页面,并且携带异常信息 ...

  7. Struts框架详解

    1.Struts应用框架介绍 (1)框架 框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用.框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中 ...

  8. Struts框架的核心业务

    Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...

  9. Struts框架

    Struts是最早的Java开源框架之一,它是MVC设计模式的一个优秀实现. Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml) Ec ...

随机推荐

  1. Node.js Buffer

    Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer ...

  2. jQuery 插件格式 规范

    方式一(自定义对象): (function($, window, document) {  var Plugin, defaults, pluginName; 调用时的函数名:     pluginN ...

  3. C++雾中风景2:struct还是class?

    之前因为都在忙着毕业的开题答辩与投稿论文的事宜,一直没有时间更新这个系列的文章.师弟看了上一篇雾中风景的文章,希望我继续把这个系列的文章写下去.坦白说,C++的特性很多,这也不是教学指南的文章,我会选 ...

  4. Python - SIP参考指南 - 介绍

    介绍 本文是SIP4.18的参考指南.SIP是一种Python工具,用于自动生成Python与C.C++库的绑定.SIP最初是在1998年用PyQt开发的,用于Python与Qt GUI toolki ...

  5. RabbitMQ的简单应用

    虽然后台使用了读写分离技术,能够在一定程度上抗击高并发,但是如果并发量特别巨大时,主数据库不能同时处理高并发的请求,这时数据库容易宕机. 问题: 现在的问题是如何既能保证数据库正常运行,又能实现用户数 ...

  6. [转载] NodeJS无所不能:细数十个令人惊讶的NodeJS开源项目

    转载自http://www.searchsoa.com.cn/showcontent_79099.htm 在几年的时间里,Node.JS逐渐发展成一个成熟的开发平台,吸引了许多开发者.有许多大型高流量 ...

  7. git命令提交项目

    相关的操作命令,总是忘记,故在此记录下: 此为linux下的命, windows的话,去掉sudo即可 1.进入项目代码根目录,执行: sudo git init 把这个目录变成git可以管理的仓库. ...

  8. C#中四步轻松使用log4net记录本地日志

    在这里,记录我在项目中使用log4net记录本地日志的步骤.在不会之前感觉很难,很神秘,一旦会了之后其实没那么难.其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验. 第一步:首先从 ...

  9. 移动应用开发者最应该知道的8款SDK

    2017年双11全球狂欢节结束后,据大数据公司统计显示,2017年双11全网销售额达2539.7亿,移动端销售占比91.2%.不难看出,智能手机因随身携带.时刻在线等特点,已取代PC,成为网络生活新的 ...

  10. 重温CSS3

    基础不牢,地动山摇!没办法,只能重温"经典"! 1.CSS3边框:border-radius; box-shadow; border-image border-radius:r1, ...