struts2 访问国际化资源 <s:text>作为属性
保留全局级国际化信息资源文件。并在message.properteis中增加一个带有参数的国际化信息。
- labela = labela in zh_CN
- labelb = labelb,{0}
<s:text>访问国际化信息 
用<s:text>标签来访问国际化信息,只需要在它的name属性上填入需要的key即可。下面,来看看它的其它的属性。 
1:使用带参数的国际化信息 
       可以用参数把一些可变值传给国际化信息,在<s:text>标签访问国际化信息的时候,只需要配合上<s:param>子标签即可传入参数,示例如下:
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <s:text name="labela"/>
- <hr>
- <s:text name="labelb">
- <s:param>ok</s:param>
- </s:text>
上面的示例中,key为labela的国际化信息没有参数,因此<s:text>标签直接结束,没有子标签;而key为labelb的国际化信息有参数,因此<s:text>标签用<s:param>子标签来传入参数值ok。在运行的时候,参数{0}被替换为ok
2:指定国际化信息来源 
再来添加一个国际化信息来源。比如,恢复包级国际化信息资源文件,也就是package_zh_CN.properties文件,内容如下:
- labela = labela in zh_CN with package
现在,同时存在全局级国际化信息资源和包级国际化信息资源,根据前面所学的知识,包级国际化信息资源会覆盖全局级国际化信息资源,因此,<s:text name=”labela”/>将会返回在package_zh_CN.properties中定义的labela = labela in zh_CN with package。 
       现在需要仍然显示全局级的国际化信息,该怎么办呢? 
       可以通过<s:i18n>标签,来为<s:text>标签指定国际化信息来源。如果<s:text>标签作为<s:i18n>标签的子标签出现,则会使用<s:i18n>指定的国际化信息来源。把jsp修改如下:
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <s:text name="labela"/>
- <hr>
- <s:i18n name="message">
- <s:text name="labela"/>
- </s:i18n>
解释一下如何引用国际化信息资源,仍然分为三种情况讨论: 
全局级国际化信息资源:直接用文件前缀名即可—message。 
包级国际化信息资源:用这个包的全限定名+package—cn.javass.i18n.package。 
类级国际化信息资源:用这个类的全限定名—cn.javass. i18n.I18NAction。 
上面的示例中,第一个<s:text>标签没有作为<s:i18n>的标签子标签出现,则它访问包级国际化信息资源;而第二个<s:text>标签作为<s:i18n>标签的子标签出现,则它访问<s:i18n>标签中指定的message国际化信息资源
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <s:form>
- <s:textfield name="name1" label="labela"/>
- </s:form>
它采用<s:form>的默认主题(xhtml)建立了一个一行一列的表单,其中,<s:textfield>标签的label属性用于在文本框前生成这个文本框的说明,label属性就是简单的把它的值“labela”放在了文本框前。 
       现在只需要做个小小的改动,就可以访问国际化的信息了,简单的把label属性改为key属性,就可以访问国际化信息来显示文本框前的说明信息了,示例如下:
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <s:form>
- <s:textfield name="name1" key="labela"/>
- </s:form>
与<s:textfield>类似,s标签中的其他可见表单域标签也都支持使用key属性来访问国际化信息,包括:<s:label/>、<s:textarea/>、<s:password/>、<s:submit/>等等,这里就不再去列举了。 
使用表单标签还有两个问题: 
表单标签在访问国际化信息的时候,不能使用<s:param>标签指定参数值。 
表单标签也可以使用<s:i18n>标签来指定国际化信息来源,代码示例如下:
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <s:form>
- <s:textfield name="name1" key="labela"/>
- </s:form>
- <hr>
- <s:i18n name="message">
- <s:form>
- <s:textfield name="name1" key="labela"/>
- </s:form>
- </s:i18n>
可以看到,第一个仍访问默认的国际化信息来源,而第二个则指定了名称为message的全局级国际化信息。
在Action中访问国际化信息 
前面都是在页面上来访问国际化的信息,如果要在Action中访问国际化信息,该怎么办呢? 
       如果我们自己写的Action类继承自ActionSupport,就可以直接使用ActionSupport的一系列getText方法来访问国际化信息。这些方法声明于ActionSupport类实现的TextProvider接口。 
分为三种情况讨论: 
访问没有参数的国际化信息。 
直接调用最简单的getText(String aTextName)即可,传入国际化信息的key,这个在前面讲ActionSupport的时候,就示例过这种情况。 
访问有参数的国际化信息。 
调用可以设置参数的getText(String aTextName,String defaultValue,String… args),其中,第一个参数为国际化信息的key,第二个参数为找不到此key时返回的默认值,第三个String[]参数传入需要传给国际化信息的参数。
指定国际化信息来源。 
调用其getTexts(String aBundleName)可以返回一个ResourceBundle对象,可然后就可以自由操作此ResourcBundle对象。 
       比如,可以在execute方法中访问国际化信息,示例如下:
- public class I18NAction extends ActionSupport{
- public String execute() throws Exception {
- System.out.println(this.getText("labela"));
- System.out.println(this.getText("labelb",null,"ok"));
- ResourceBundle bundle = this.getTexts("message");
- System.out.println(bundle.getString("labela"));
- return SUCCESS;
- }
- }
在上例中,第一句访问默认的国际化信息,第二句访问默认的国际化信息并传入参数值为ok,第三句访问名为message的全局国际化信息。访问这个Action,运行的结果是
labelb,ok
labela in zh_CN
struts2 访问国际化资源 <s:text>作为属性的更多相关文章
- Struts2配置国际化资源
		1. 国际化的目标 1). 如何配置国际化资源文件 I. Action 范围资源文件: 在Action类文件所在的路径建立名为 ActionName_language_country.properti ... 
- 2.struts2访问web资源(在struts2中获取session,request等等)
		什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ... 
- struts2访问web资源
		通过ActionContext访问 public class TestActionContextAction { public String execute(){ //获取 ActionContext ... 
- [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- struts2访问或添加几个属性(request/session/application属性)
		https://blog.csdn.net/hebiao100/article/details/7385055 struts2添加request.session.application属性 第一种方法 ... 
- Struts2的国际化
		1.概述 把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 与国际化对应的是本地化, 指让一个具备国际化支持的应用程序支持某个特定的地区 Struts2国际化是建 ... 
- Struts2的国际化入门
		Struts2的国际化入门 Struts2国际化是建立在Java国际化的基础上的,一样是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再 ... 
- Struts2(四):在Action中如何访问Web资源
		1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ... 
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
随机推荐
- python package 的两种组织方式
			方式一/package1/ .../__init__.py # 空文件 .../class1.py class Class1: def __init__(self): self.name = &quo ... 
- JS 之继承
			ECMAScript继承是通过原型链来继承的.基本思想是利用原型来让一个引用类型继承另一个引用类型的属性和方法,使原型变为另一个对象的实例.通过原型链实现继承时,不能使用对象字面量创建原型方法,避免重 ... 
- [VIM] 格式化代码
			快速使用vim格式化代码 在vim的编辑模式i下直接ESC退出道命令模式之后直接敲入如下命令: gg=G 将全部代码格式化 nG=mG 将第n行到第m行的代码格式化 注:如果ESC ... 
- 信息安全系统设计基础exp_2
			详见搭档20135322郑伟博客,链接如下:http://www.cnblogs.com/zhengwei0712/p/4971435.html 
- JQuery上传文件插件Uploadify使用笔记
			新工作的第一份任务就是给实现 限制Uploadify 上传文件格式为图片 测试出来报错,选择了非图片文件,提示错误后,再选择其他文件,上传时还是包含了之前清空的非图片文件 最后实现效果的代码是 //上 ... 
- php文件上传之多文件上传
			在胡说之前,首先声明,本文是建立在掌握php单文件上传的基础上,所以这里就不赘述文件上传服务器配置,表单设置该注意的地方了. 话不多少,直入主题,在请求页面方面有两种写法(只呈现表单部分,以上传三个文 ... 
- JavaScript中的各种小坑汇总
			1.Number()将部分非数字类型转换为0 强制转换为数值类型函数: parseFloat.parseInt 优点:对非数值类型统一返回NaN 缺点:会将一部分符合数值类型的字符串也识别为数值 pa ... 
- Sublime Text 3使用参考手册
			什么是Sublime Text? Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器.Sublime Text是 ... 
- jsonp的后台怎么返回去数据
- [Aaronyang] 写给自己的WPF4.5 失传的第一本古老秘籍[多扩展显示器编程]
			世界上只有想不通的人,没有走不通的路 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两年后再看WPF,有些秘籍不太适合公开,公开了就不值 ... 
