Struts2学习笔记(3)之国际化

来源:互联网 发布:159素食全餐淘宝好便宜 编辑:程序博客网 时间:2024/05/18 23:53

国际化

配置国际化全局资源文件

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

1 0
原创粉丝点击