zoukankan      html  css  js  c++  java
  • struts.custom.i18n.resources国际化

    每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化

    首先在struts.properties文件中加入以下内容:
    struts.custom.i18n.resources=messageResource
    或在struts.xml中加入
    <constant name="struts.custom.i18n.resources" value="messageResource"></constant>

    资源文件的命名格式: 名称_语言代码_国家代码. Properties
    如果创建中文和英语国际化,那么资源文件名称为
    messageResource_zh_CN.properties和messageResource_en_US.properties

    1. jsp页面的国际化 
    通过使用标签<s:text name="label.helloWorld"/>输出国际化
    label.helloWorld为资源文件中定义的key


    在messageResource_en_US.properties加入以下内容
    label.hello=hello {0}
    label.helloWorld=hello,world

    在messageResource_zh_CN.properties加入以下内容
    label.hello=你好 {0}
    label.helloWorld=你好,世界

    (1). <s:text name="label.helloWorld"/>
    <s:property value="%{getText('label.helloWorld')}"/>
    上面两个都为输出一个hello word的两种表示

    <s:textfield name="name" key="label.helloWorld"/>
    <s:textfield name="name" label="%{getText('label.helloWorld')}"/>
    显示一个文本框,文本框的标题进行国际化

    (2). 使用<s:i18n>标签指定从某个特定的资源文件中取数据
    <s:i18n name="messageResource">
       <s:text name="label.helloWorld"></s:text>
    </s:i18n>
    指定在从messageResource取资源

    (3).
    <s:text name="label.hello">
       <s:param>callan</s:param>
    </s:text>
    使用带参数的资源.<s:param>可以替换label.hello=hello {0}中的{0}

    2. Action的国际化
    Action的国际化主要是通过getText(String key)方法实现的

    public String execute()throws Exception {   
      
               
      
            // getText(String) string为key  
      
             String str1 = getText("label.helloWorld");   
      
             System.out.println(str1);   
      
               
      
            // 带参数的   
      
             String str2 = getText("label.hello",new String[]{"fjf"});   
      
             System.out.println(str2);   
      
           
      
            // 与上一种实现一样   
      
             List l = new ArrayList();   
      
             l.add("callan");   
      
             String str3 = getText("label.hello",l);   
      
             System.out.println(str3);   
      
               
      
            return SUCCESS;   
      
         }

    3. 参数化国际化
    在messageResource_en_US.properties加入以下内容
    userName=userName
    userName.required=${getText('userName')} is required

    在messageResource_zh_CN.properties加入以下内容
    userName=用户名
    userName.required=${getText('userName')} 不能为空

    在Action中
    String str4 = getText("userName.required");
    System.out.println(str4);

    userName.required=${getText('userName')}会取国际化的用户名

    4. 使用校验框价时,提示信息可以国际化
       <field name="userName">
       <field-validator type="requiredstring">
        <message key=”userName.required”> </message>
       </field-validator>
    </field>


    国际化资源文件分为三种级别
    (1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
    (2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
    (3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码
    查找顺序为从小范围到大范围, Action级优先级最大

    <filter>
       <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
       <init-param>
                <param-name>struts.custom.i18n.resources</param-name>
                <param-value>globalMessages</param-value>
            </init-param>
    </filter>

    <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>

  • 相关阅读:
    Jasper_crosstab_Parameter_Crosstab Header
    Jasper_style
    Linux_hadoop_install
    Linux_jdk path (execute and install)
    Linux_install mod_ssl openssl apache
    Linux_install jdk
    Linux_service cloudera-scm-server start failed
    Linux_ERROR 1045 (28000): Access denied for user 'root'@'localhost'
    Jasper_table_Cloud not resolve style(s)
    Linux_shell条件判断if中的-a到-z的意思
  • 原文地址:https://www.cnblogs.com/wkrbky/p/5903009.html
Copyright © 2011-2022 走看看