十四、Struts2的国际化

十四、Struts2的国际化

1、配置全局国际化消息资源包

  1. 配置全局消息资源包

    <!--配置全局消息资源包 -->

        <constant
    name="struts.custom.i18n.resources"
    value="msg"></constant>

     

    b、如何访问

  • 在动作类中:

前提,动作类继承ActionSupport

public
class
Demo1Action
extends ActionSupport{

    @Override

    public String execute() throws Exception {

        // 在动作类中获取消息包中的信息

        String str = getText("hello");

        System.out.println(str);

        return
NONE;

    }

}

 

  • 在页面中:

<!-- 从消息包中取不到对应的key值,自己直接上了 -->

    <s:textfield
name="username"
key="hello"></s:textfield>

 

或者

<s:text
name="hello"></s:text>

 

  • *指定消息资源包,借助struts2的有关国际化的标签:

<!-- *指定消息资源包:name 的值为资源包在类路径中的路径 -->

    <s:i18n
name="msg">

        <s:text
name="hello"></s:text>

    </s:i18n>

 

如果消息资源包在com.itheima.resources.msg_zh_CN.properties

<s:i18n
name="com/itheima/resources/msg">

        <s:text
name="hello"></s:text>

    </s:i18n>

 

  1. 配置局部消息资源包

    一定要经过Action才行:

    书写规范:在动作类所在包中,建立名字"动作类名-zh-CN.properties"的配置文件。动作类中访问,发现局部的比全局的优先级高。

    /*

    * 关于局部消息资源包内容的访问:

    * 1.必须经过Action才行

    * 2.Action继承了ActionSupport

    * 才会从局部消息资源包中取数据。

    *

    * 如果这样来访问:(原理:ValueStack和OGNL有关)

    * 1.直接访问jsp,没有经过动作类。从全局取

    * 2.如果Action没有基础ActionSupport。从全局中取

    */

    public
    class
    Demo1Action
    extends ActionSupport{

        @Override

        public String execute() throws Exception {

            return
    SUCCESS;

        }

    }

     

    3、包范围的消息资源包

    也得经过action访问

    书写有规范的,名称为package_zh_CN.properties,放在类的包中。可以被包中及子包的所有动作类来访问。

     

     

    总结:

    十四、Struts2的国际化

     

上一篇:macos 下安装brew


下一篇:Altium Designer 16