Struts2实现国际化
public class I18nAction extends ActionSupport { private static final long serialVersionUID = -6933309304624396640L; public String reg() { return "success"; } public String toRegView() { System.out.println("toRegView"); return "regView"; } }
struts.xml配置文件
<?xml version="1.0"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <package name="I18nPkg" namespace="/i18n" extends="struts-default"> <action name="I18nAction_*" class="struts2.i18n.I18nAction" method="{1}"> <result name="success">/i18n/reg.jsp</result> <result name="regView">/i18n/reg.jsp</result> </action> </package> </struts>
reg.jsp
<html> <head> <title>reg.jsp</title> </head> <body> <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml"> <s:textfield name="name" key="label.name" /> 标签中使用key 就会自动使用国际化功能 <s:submit /> </s:form> </body> </html>
默认的配置文件:
I18nAction.properties 内容如下:
label.name=userName
简体中文配置文件:
I18nAction_zh_CN.properties
label.name=用户名
美式英语的配置文件 I18nAction_en_US.properties
label.name=要显示的名称
以此命名规则:
英式英语的配置文件 I18nAction_en_UK.properties
完成上述的步骤即可实现国际化,可以通过修改浏览器选项中的语言,来修改语言测试、
有时候是想让用户手动的去选择国际化,那么如何让用户从给定的国际化中选择语言呢????????
使用ognl表达式来构建各种语言的map对象。
<html> <head> <title>reg.jsp</title> </head> <body> <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml"> <s:select name="request_locale" list="#{'zh-CN':'简体中文'
'zh-TW':'繁体中文',
'en-US':'美式英语',
'en-UL':'英式英语',
'ja-JP':'日语'}"
listKey="key" listValue="value" onchange="this.form.submit();" value="locale"> 一定要设置value。否则不会回显,每次选择其他的后,语言选择框又选择第一个了。
Struts2中有个i18n的拦截器,就把当前选择的语言存储到session的属性中,key为locale
</s:select> <s:textfield name="name" key="label.name" /> <s:submit /> </s:form> </body> </html>
可以在源码中有个Local.class文件,里面定义了各种国际化的语言。ognl表达式可以调用静态的方法。同样可以达到上面的效果。
<html> <head> <title>reg.jsp</title> </head> <body> <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml"> <s:select name="request_locale" list="#{@java.util.Locale@CHINA:@java.util.Locale@CHINA.getDisplayName(@java.util.Locale@CHINA), @java.util.Locale@TAIWAN:@java.util.Locale@TAIWAN.getDisplayName(@java.util.Locale@TAIWAN), @java.util.Locale@US:@java.util.Locale@US.getDisplayName(@java.util.Locale@US), @java.util.Locale@UK:@java.util.Locale@UK.getDisplayName(@java.util.Locale@UK), @java.util.Locale@JAPAN:@java.util.Locale@JAPAN.getDisplayName(@java.util.Locale@JAPAN)}" listKey="key" listValue="value" onchange="this.form.submit();" value="locale"> </s:select> <s:textfield name="name" key="label.name" /> <s:submit /> </s:form> </body> </html>
Struts2实现国际化的更多相关文章
- 十四、Struts2的国际化
十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 --> <constant name="struts.c ...
- JavaWeb框架_Struts2_(八)----->Struts2的国际化
这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...
- struts2 资源国际化
web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp ...
- Struts2的国际化入门
Struts2的国际化入门 Struts2国际化是建立在Java国际化的基础上的,一样是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再 ...
- 浅谈struts2的国际化----i18n
可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...
- 【Struts2】 国际化
一.概述 二.Struts2中国际化: 2.1 问题1 全局 局部 2.2 问题2 2.3 问题3 2.4 问题4 在Action中怎样使用 在JSP页面上怎样使用 一.概述 同一款软件 可以为不同用 ...
- (十四)struts2的国际化
一.国际化的概念 国际化是指web程序在运行时,根据客户端请求的国家.语言的不同而显示不同的界面. 例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息. ...
- Struts2之国际化
时间:2017-1-11 11:12 --国际化Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可.要使用国际化的Action必须继承ActionSupport.1.什么是 ...
- Struts2 internationalization(国际化)
1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...
随机推荐
- 最短路径Shortest Path algorithm
最短路径问题: 如果从图中某一顶点(称为端点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小. (1)Dijkstra 算法 (2) Floyd 算 ...
- Python之生产者&、消费者模型
多线程中的生产者和消费者模型: 生产者和消费者可以用多线程实现,它们通过Queue队列进行通信. import time,random import Queue,threading q = Queue ...
- jsonp原来是这么回事,豁然开朗
什么是JSONP 先说说JSONP是怎么产生的: 其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题, ...
- CCleaner(著名清理软件) 5.21.5700 中文免费版(著名清理软件) 5.21.5700 中文免费版
软件名称: CCleaner(著名清理软件) 5.21.5700 中文免费版著名清理软件(CCleaner)软件语言: 多国语言授权方式: 免费软件运行环境: Win 32位/64位软件大小: 5.6 ...
- PeekMessage与GetMessage的对比
PeekMessage与GetMessage的对比相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中 的消息派发出去. 不同点:无论应用程序消息队 ...
- elasticsearch 批量插入
将下面数据写入requests { "create": { "_index": "index1", "_type": & ...
- MySQL python组件安装
可使用pip进行安装 pip install MySQL-python 如出现以下错误 _mysql.c::: 错误:my_config.h:没有那个文件或目录 _mysql.c::: 错误:mysq ...
- javaWEB总结(1):第一个servlet程序
1.新建一个javaWeb工程,工程的目录如下 2.在com.dao.chu的包下新建一个HelloServlet.java类 package com.dao.chu; import java.io. ...
- 【第一篇】Python基础
Python学习 学习站点:https://www.shiyanlou.com/ 1 hello world code如下: $ python [15:50:40] Python2.7.6(defau ...
- android CTS测试
CTS认证是获得Google推出的Android系统中Android Market服务的前提 CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出A ...