struts2的国际化学习笔记

来源:互联网 发布:淘宝网店商品利润简介 编辑:程序博客网 时间:2024/04/29 18:12

国际化

一.国际化的目标


1. 如何配置国际化资源文件
1) Action 范围资源文件:在Action 类文件所在的路径建立
      名为ActionName_language_country.properties的文件
2) 包范围资源文件: 在的根路径下建立文件
      名为package_language_country.properties 的属性文件一旦建立,
       处于该包下的所有  Action 都可以访问该资源文件,注意报范围资源文件的baseName就是package,
   不是Action 的所在包名。
 3)  全局资源文件
   命名方式:basename_language_country.properties
  struts.xml  <constant name="struts.custom.i18n.resource" value="baseName"/>
  struts.properties  struts.custom.i18n.resources=baseName
        
        注意:properties文件里的 key = ?? (key属性值 要和  表单中key 或对应转换的Key 的属性值要一致)


2.如何在页面上和Action类中访问国际化资源文件的value值
     1)在Action 类中,若Action 实现了TestProvider接口,则可调用其getTest()方法获取value值
         > 通过继承ActionSupport的方式
      2)页面上使用 s:test 标签  对于表单标签可以使用表单标签的key属性值
         >若有占位符,则使用 s:test 标签的s:param 子标签来补充
         >可以利用标签和OGNL  表达式直接访问值栈中的属性值(对象栈和 Map栈)
3.实现通过超链切换语言。
     1)关键之处在于知道struts2框架是怎样确定Local对象的
     2)可通过阅读i18n拦截器


消息错误显示


<!--
    问题1:  覆盖错误显示消息。
        (1)在对应的action中创建一个文件名为actionclassname.properties文件。
       (2)    加入下键值对:invalib.fieldvalue.fieldName=???
  问题2:若是simpie主题
    (1)通過debug标签,可知值栈的Action(实现ValidationAwar接口)
         对象中一个属性fieldErrors,类型为Map<String,List<String>>,可用OGNL或LE表示。
         ${fieldErrors.age[0]}(获取第一个字符串),
   (2)也可以通过s:fiedlErrors  标签表示,可通过fieldName属性显示指定字段的错误
   
   问题3:若是simple且用<s:fieldErrors fieldName="age"></s:fieldErrors>来显示错误消息。则消息在 ul,li,span中。如何去除
         在template.simple下面的fielderror.ftl 定义了simple主题下。s:fielderrors显示错误消息样式,修改配置文件即可。
         方法:src下新建template.simple包。新建fielderror.ftl 文件。把原生的fielderror.ftl 内容复制到新建的fielderror.ftl ,剔除ul,li,span即可
   
   问题4:如何自定义类型转换器?
         1. (1) 为何?:因为struts2不能自动完成字符串到引用类型的转换
   2) 如何定义:
     首先定义一个类,继承StrutsTypeConverter(即扩展 StrutsTypeConverter 类)
         2. 基于字段配置:
   >在字段所在的Model(可能是Action,也可能是一个JavaBean)的包下;新建一个ModelClassName-conversion.properties文件
   >在文件中键入键值对:fieldName = 类型转换器的全类名;
         3.基于类型的配置
   >在src下新建xwork-conversion.properties
   >键入:待转换的类型= 类型转换器的全类名;
   -->

0 0