Struts框架的国际化
本文将通过一个详细的实例来展示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
Struts框架的国际化的更多相关文章
- Struts框架2ActionError类 内部资料 请勿转载 谢谢合作
ActionError类从不独立进行错误处理,它们总是被存储在ActionErrors对象中.ActionErrors对象保存ActionError类的集合以及它们特定的属性值,我们可以使用自己定义的 ...
- struts框架学习过程中的问题
1,错误: java.lang.NullPointerException: Module 'null' not found.错误原因,struts运行需要的.jar文件拷贝不足,应该把它们加入到cla ...
- Struts框架 内部资料 请勿转载 谢谢合作
Struts框架 struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发. 本章详细讨论struts架构.我们将看到struts是如何清晰地区分控制,事务逻 ...
- (28)初识struts框架
案例剖析中介绍了一个自己写的mystruts框架,这里开始简单的认识struts框架. 1.先看一个简单的struts开发的例子来熟悉一下流程 Struts就是基于mvc模式的框架! (struts其 ...
- Struts 框架
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- 学习Struts框架系列(三):声明式异常处理
在Struts1.X的版本中加入了对异常的处理Exception Handler,有了它我们可以不使用try/catch捕获异常,一旦出现了我们已经定义的异常,那么就会转到相应的页面,并且携带异常信息 ...
- Struts框架详解
1.Struts应用框架介绍 (1)框架 框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用.框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中 ...
- Struts框架的核心业务
Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...
- Struts框架
Struts是最早的Java开源框架之一,它是MVC设计模式的一个优秀实现. Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml) Ec ...
随机推荐
- React + Node 单页应用「一」前端搭建
项目地址 预览地址 原文地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. ...
- Struts2知识整理
准备找工作了.好忐忑!!! 整理整理知识,好好准备. 其实现在Struts2好像不是特别流行,不过还是有用武之地的. struts2简介 struts2是基于mvc开发模型的框架,属于表现层框架 核心 ...
- C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework)----(一):整体介绍
C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework) 在现今软件系统纷纷"云化"的浪潮下,各种支持" ...
- HTTP响应头信息(Response Headers)与请求头信息(Request Headers)
打开了电影天堂网站,我们鼠标右键“检查”->打开“开发者工具”->选择“Network”. 刷新网页,选择某一文件点击(此处我是点击db.css),可以观察到Response Header ...
- java的linux命令
1.查找文件find / -name filename.txt 根据名称查找/目录下的filename.txt文件.find . -name “*.xml” 递归查找所有的xml文件2.查看一个程序是 ...
- SQL系统函数的使用(实验五)
SQL系统函数的使用(试验5) 函数在查询语句中的使用 查询员工的姓名和日工资(保留1位小数): 查询并显示部门号为01和02的所有员工的姓名首字及岗位: 查询并显示所有员工的姓名及工龄: 查询199 ...
- [转载] Netty源码分析
转载自http://blog.csdn.net/kobejayandy/article/details/11836813 Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高 ...
- Python的__init__.py用法
python中包的引入,对于大型项目中都会使用到这个功能,把实现不同功能的python文件放在一起,组成不同lib库,然后在其他地方调用. 包,python源文件+__init__.py 模块,pyt ...
- YII2调试 通过日志记录将变量保存到文件
$log = new \yii\log\FileTarget(); $content=var_export($menu,"true");//将数组或对象转换字符串格式 $con ...
- 使用mysql5.7新特性(虚拟列)解决使用前通配符性能问题
众所周知,在mysql里的后通配符可以使用索引查找,前通配查询却无法使用到索引,即使是使用到了索引,也是使用了索引全扫描,效率依然不高,再MySQL5.7之前,一直都没有好的办法解决,但是到了MySQ ...