Struts2学习笔记(3)之国际化
2016-01-22 19:21
375 查看
国际化
配置国际化全局资源文件
1. 准备资源文件,资源文件命名格式:例如中国大陆:baseName_zh_CN.properties
美国:baseName_en_US.properties
在资源文件中以键-值的形式表现出来。
2. 在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件:
<constant name=” struts.custom.i18n.resources” value=”baseName”>
3. 在页面或action中访问国际化信息:
1) 在jsp页面中使用<s:text name=”key”/> key为配置文件中的键。
2) 在action类中,可以使用ActionSupport,使用getText(key)方法得到国际化信息。Key为配置文件中的键。
4. 输出带有占位符的国际化信息
1) 资源文件:{0},欢迎来到传智播客,{1}
2) 在jsp中输出带有占位符的国际化信息
<s:text name=”baseName”>
<s:param><s:propertyvalue=”param”/></s:param>
<s:param>hello</s:param>
</s:text>
3) 在Action中添加占位符信息
this.getText("baseName” , new String[]{“hello”,”你好”});
包范围资源文件
1. 在对应的包中创建资源文件2. 资源文件的名字必须是:package_language_country.properties资源文件。必须以package开头。
3. 处于该包下的Action查找指定的key的消息时:
1) 从package资源查找。
2) 当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件中寻找。即全局资源文件中找
Action范围资源文件
1. 同包范围资源文件。2. 资源名:以具体的ActionClassName开头。
3. 查找顺序:从小到大。即action->package->basename
自动切换
例如切换到英文:只需在超链接的URL后+request_locale=en_US,这样就可使请求的Action下的视图切换为对应的语言。Struts2调用Action的源码分析(拦截器)
1. 请求被web.xml中拦截器,拦截,执行对应拦截器中的doFilter()方法。
2. 在doFilter中执行了executeAction(),并在其中调用Dispatcher对象的serviceAction()
3. Dispatcher创建了一个ActionProxy(动态代理的)对象proxy。调用proxy的execute()方法。
4. 在ActionProxy方法中,获得ActionInvocation对象,这个对象封装了这个action父包中的所有拦截器以及自己的action。
5. 通过ActionInvocation对象invocation。执行invocation.invoke(),从父包中依次执行intercept(拦截器)。【具体过程见上图】。
6. 当所有的拦截器执行结束后,才执行action。
7. 默认调用action#execute()方法。
自定义类型转换器
1. 定义类型转换器的类1) 继承DefaultTypeConverter类。
2) 重写converValue方法。
2. 注册类型转换器:
1) 注册为局部类型转换器
a) 在Action类所在的包内放置”ActionClassName”-conversion.properties文件。其中ActionClassName是Action的类名称。
b) 填写配置信息:属性名=类型转换器类的全路径名称
其中属性是Action类中需要转换的属性名称
2) 注册为全局类型转换器
a) 在根目录中放置xwork-conversion.properties文件。
b) 填写配置信息:带转换类型=类型转换器类的全路径名称。不能是属性必须是类型。
例如:java.util.Data=cn.itcase.conversion.DateConerter
相关文章推荐
- struts2标签
- Struts2学习笔记(1)之Action
- Struts2学习笔记(2)之Result
- struts2 -- interceptor(如何配置Interceptor)
- struct2 的拦截器
- struct1 与 struct2 的区别
- struct2模板介绍
- Struct2+jquery1.7+json的Ajax简单实例
- struct2源码解读(7)之搭建struct2运行环境
- struct2源码解读(8)之container原理
- struct2源码解读(9)之处理Action请求
- struct2源码解读(11)之执行action请求中篇
- struct2源码解读(12)之拦截器
- struct2 前台0和1后台使用boolean值接受
- struct2 ajax
- SpringMVC
- Struts2实现文件上传和下载
- Struts2中的ModelDriven机制及其运用
- 【Struct2】【Action类】【自动获取请求参数】
- struct2的配置及经验总结