- 浏览: 1230742 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
package com.lwf.struts.util; import java.text.MessageFormat; import java.util.Date; import java.util.Locale; import java.util.ResourceBundle; public class Testl18n { /** * @param args */ public static void main(String[] args) { //测试国际化:打开IE浏览器,语言>>可添加其它国家语言,并放在最上面。这样系统读到的就是这个语言了。 //下面演示从系统获得语言设置 Locale locale = Locale.getDefault(); String country = locale.getCountry(); String lang = locale.getLanguage(); ResourceBundle bundle =ResourceBundle.getBundle("ApplicationResources", locale); String message = bundle.getString("user.pwd.null"); System.out.println(message); //以下演示自定义语言设置 Locale locale1 = new Locale("en", "us"); ResourceBundle bundle1 =ResourceBundle.getBundle("ApplicationResources", locale1); message = bundle1.getString("user.pwd.null"); System.out.println(message); //以下演示显示参数 //MessageFormat用法一 MessageFormat format = new MessageFormat(message); String megFormat = format.format(new Object[]{new Date()}); System.out.println(megFormat); //MessageFormat用法二 int planet = 7; String event = "a disturbance in the Force"; String result = MessageFormat.format( "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.", planet, new Date(), event); System.out.println(result); } }
在src目录下两个资源文件ApplicationResources_zh_CN.txt文件内容,将其转换成ApplicationResources_zh_CN.properties
user.pwd.null = 用户名不能为空,参数:{0}
ApplicationResources_en_US.properties内容为:
user.pwd.null = user or pwd must not null param :{0}
程序运行结果为:
用户名不能为空{0} user or pwd must not null param :{0} user or pwd must not null param :10-4-2 下午5:07 At 17:07:45 on 2010-4-2, there was a disturbance in the Force on planet 7.
我们来看Struts中源码是怎么处理国际化的:
protected void processLocale(HttpServletRequest request, HttpServletResponse response) { // Are we configured to select the Locale automatically? if (!moduleConfig.getControllerConfig().getLocale()) { return; } // Has a Locale already been selected? HttpSession session = request.getSession(); if (session.getAttribute(Globals.LOCALE_KEY) != null) { return; } // Use the Locale returned by the servlet container (if any) Locale locale = request.getLocale(); if (locale != null) { if (log.isDebugEnabled()) { log.debug(" Setting user locale '" + locale + "'"); } session.setAttribute(Globals.LOCALE_KEY, locale); } }
源码显示如果session中没有设置locale则从request中读取,并创建新的Locale然后再存放到session中。
那么我们可以在页面上包含设置locale的地方,设置完后放入session中。
如下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Locale,org.apache.struts.*" %> <%@include file="share/jsp_head_include.jspf" %> <!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=UTF-8"> <title>Insert title here</title> </head> <body> <% Locale locale = new Locale("zh","cn"); session.setAttribute(Globals.LOCALE_KEY,locale); %> <bean:message key="login.fail" /><br> <% %> </body> </html>
注意上面的页面中新建了Locale对象,并放入session中,Globals.LOCALE_KEY正是struts源码中的session.getAttribute的key值。
通常的做法是提供设置中文,英文等checkbox客户选择后,保存.我们就象上面JSP中做法一样,新建Locale并把它放入session中.
再看看资源文件路径的问题:
上面我们测试的时候是把资源文件放在src的根目录,如果现在把资源文件放在com.lwf.struts.util.property包下面。那么测试的代码应该
由: ResourceBundle bundle =ResourceBundle.getBundle("ApplicationResources", locale); 改成: ResourceBundle bundle =ResourceBundle.getBundle("com.lwf.struts.util.property.ApplicationResources", locale); 就可以了
而对于struts来说只需要配置文件修改一下就行:
由: <message-resources parameter="ApplicationResources" /> 改成: <message-resources parameter="com.lwf.struts.util.property.ApplicationResources" />
即可
发表评论
-
DispatchAction 和DynaValidateActionForm 结合使用时的问题
2011-03-08 16:23 935使用DispatchAction使得程序员能够大大减少acti ... -
ActionForm中使用集合属性并自动组装数据
2011-01-18 14:32 929http://blog.csdn.net/m0085_cn/a ... -
Cannot find bean org.apache.struts.taglib.html.BEAN in any scope
2010-11-10 14:13 976开的过程中碰到问题:Cannot find bean org. ... -
Struts 结合 Validate框架验证详解
2010-10-25 14:00 1508转自:http://student.csdn.net/spac ... -
JSTL与struts1标签
2010-08-31 10:17 1555JSTL与struts标签: http://www.360d ... -
如何自动清空struts表单域
2010-06-30 17:44 1269为了某种需要,formBean的SCOPE设置成了ses ... -
form验证与动态验证框架
2010-06-06 17:22 1390form验证返回ActionErrors. 动态验证则实现J ... -
resourcebundleeditor在eclipse里面的设置和使用
2010-05-30 11:30 1751我们一般使用native2ascii工具得到struts资源文 ... -
使用DispatchAction分发
2010-04-07 18:04 1160应用中经常有增、删、改、查操作,如果象一前一样使用List ... -
forward属性与ForwardAction类
2010-04-07 17:08 1174forward属性与ForwardAction类在配置文件按以 ... -
struts容错处理
2010-04-07 15:20 1188struts容错处理: 当客户请求的action不存在的时候 ... -
struts声明式异常二
2010-04-07 15:18 1174上文如果资源文件改为: error.login.usernu ... -
struts声明式异常一
2010-04-06 23:10 1056struts声明式异常: 在配置文件中配置exception ... -
struts编程式异常--html:error与html:message
2010-04-03 11:39 2041struts编程式异常过程: 截获异常信息;创建异常信息; ... -
struts国际化,从资源文件读取异常信息
2010-04-03 01:56 1201示例演示登录时从资源文件读取用户名或密码错误信息 logon ... -
struts国际化,资源文件读取三
2010-04-02 23:42 1030本示例演示客户进行语言设置,从而更改整个系统语言. 客户在c ... -
struts国际化,资源文件读取一
2010-04-02 00:19 1376国际化的发展 看本文之前可先看一下properties文件的 ... -
struts html标签自动保存提交的表单值。
2010-04-01 17:01 2063我们之前JSP提交值后如果还要取得值怎么做? 应该是取得a ... -
ActionMapping相关
2010-04-01 16:02 1085一、Map的设置map.put("path" ... -
ActionForward相关问题
2010-04-01 15:13 1364一、静态的ActionForward不能更改属性: stru ...
相关推荐
### STRUTS2国际化的问题 #### 一、Struts2国际化的概述 Struts2作为一个流行的Web应用框架,为了满足全球用户的使用需求,提供了一系列国际化(Internationalization, 简称I18N)的支持。这包括了如何在配置文件...
在JSP页面中,使用Struts2的标签库中的标签来读取并显示国际化资源文件中的文本。 在编写国际化资源文件时,需要注意编码方式。由于国际化资源文件中可能包含中文或其他非ASCII字符,为了防止页面出现乱码,所有的...
- 在`execute()`方法中,实现文件路径的获取和文件读取逻辑。通常,文件存储在服务器的某个目录下,可以使用`java.io.File`类来处理。 2. **设置返回结果**: - 在Action类中,设置返回值(Result)为`stream`...
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode 3、在jsp中采用标签来读取国际化消息文本 4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置,设置...
2. **资源配置**:在Struts配置文件(如`struts-config.xml`或`struts2的struts.xml`)中,我们需要配置资源文件的位置,使Struts框架知道在哪里查找这些文本。例如: ```xml <constant name="struts.i18n....
- `<message-resources>`: 国际化资源文件配置。 - `<plug-in>`: 插件配置。 ##### 2. 关键配置项 - **`<form-bean>`**: - 定义表单Bean的属性和验证规则。 - **`<action-mapping>`**: - 映射Action的执行逻辑...
2. Action使用POI读取Excel文件并处理数据。 3. 数据被转换为JFreeChart的数据集。 4. 使用JFreeChart创建图表对象。 5. 如果需要,可以使用`ChartUtilities`将图表保存为图片文件。 6. 在Action中设置响应结果,...
2. **配置Struts**:在Struts的配置文件(struts-config.xml)中,需要指定资源包的位置。这可以通过`<message-resources>`标签来完成,例如: ```xml ``` 这里,`parameter`属性指向资源包的包名和类名(通常...
Struts2提供了丰富的功能,包括动作调度、结果渲染、数据校验、国际化、异常处理等,极大地简化了Java Web开发。 Uploadify是一款基于jQuery的文件上传组件,它支持Ajax方式的异步上传,允许用户在上传文件过程中...
通过Eclipse的插件系统,开发者可以直接在IDE内完成大部分国际化相关的任务,而无需频繁地在代码和资源文件之间切换。 总的来说,JInto是Struts开发者实现国际化的一个有力工具,它通过与Eclipse的紧密集成,简化了...
Struts2提供了文件流的方式来实现这一需求,这种方式避免了在服务器上生成临时文件,提高了效率并减少了服务器存储空间的占用。下面将详细讲解如何使用Struts2的文件流技术来实现这些功能。 首先,我们需要理解文件...
2. **国际化配置**:在struts-config.xml中,我们需要配置`<message-resources>`元素来指定资源包的位置和加载策略。例如,`<message-resources parameter="com.example.i18n.messages" />` 指定了名为"messages"的...
Struts2会读取这个参数并加载相应的资源文件。 7. **国际化与视图结合**: - 在JSP页面中,可以直接将资源文件的值引入到页面元素中,例如: ```jsp ``` 8. **使用工具**: - 开发过程中,可以使用一些工具...
2. **大小限制**:设置上传文件大小的上限,防止过大文件耗尽服务器资源。 3. **文件类型检查**:仅允许特定类型的文件上传,避免恶意文件上传。 4. **存储位置**:将上传文件存储在安全目录,避免暴露敏感信息或...
二、Struts2国际资源文件 1. **资源文件**:国际资源文件(如.properties或.resx文件)用于存储不同语言的文本。在Struts2中,这些文件通常放在`src/main/resources`目录下,并以`messages_xx_XX.properties`的格式...
在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...
资源文件通常包含应用程序的国际化(i18n)信息,如错误消息、提示和界面文本,这些内容往往需要根据不同的语言进行本地化。在Struts中,这些资源通常是以.properties为扩展名的文件,例如`messages_zh_...
3. **实现Struts国际化**:在Struts框架中,可以通过配置文件指定不同语言版本的资源文件路径。当用户访问应用时,Struts会根据用户的`Locale`加载相应的资源文件。 #### 难点提示 1. **设定本地语言**:需要根据...
开发过程中,可以使用各种工具辅助管理资源文件,如Eclipse的Resource Bundle Editor或专门的国际化工具插件,它们能帮助同步和校对不同语言版本的文本。 6. **StrutsLocaleTest项目** `StrutsLocaleTest`项目很...