zoukankan      html  css  js  c++  java
  • Struts2之国际化

    时间:2017-1-11 11:12

    ——国际化

    Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可。

    要使用国际化的Action必须继承ActionSupport。

    1、什么是国际化
        同一款软件可以为不同用户提供不同语言界面。

    2、国际化原理
        需要一个语言资源包,包含很多properties文件,每个properties文件针对一个国家或一种语言,通过Java程序根据来访者国家语言,自动读取不同的properties文件。

    3、读取properties文件
        ResourceBundle根据不同Locale(地域信息),读取不同国家的properties文件。
        ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.US);

    4、在Struts2中国际化properties文件如何定义
        命名规范:基本名称_语言(小写)_国家(大写).properties
        例如:
            messages_zh_CN.properties
            messages_en_US.properties

        1)全局
            文件可以放在项目的任何位置。

            需要通过一个常量来声明。

            在default.properties文件中有一行定义常量:(默认是被注释的)
                # struts.custom.i18n.resources=testmessages,testmessages2

            在struts.xml文件中声明:
                <!-- 声明一个全局的国际化文件 -->

                <constant name="struts.custom.i18n.resources" value="message"></constant>
            以上路径表示properties文件在src目录下,如果在包中,需要写包名:
                value="com.wyc.i18n.message"
     

        2)局部
            *   针对Action类:
                >   与Action类在同一包下
                >   名称:ActionClassName.properties
                >   这个配置文件只对当前Action有效

            *   针对package下所有Action
                >   当多个Action需要使用同一个国际化信息,可以使用该方法,该方法对包中所有Action有效。
                >   命名:package.properties
                >   位置:在指定的包中

            *   jsp页面临时使用某一个properties文件
                >   声明一个properties文件
                >   在JSP页面中导入Struts2标签库
                >   使用标签:<s:i18n name="包名.资源文件名"></s:i18n>

    5、Struts2中国际化可以在哪些位置可以使用
        1)在Action类中使用

        2)在配置文件中使用
            validation.xml文件

        3)在JSP页面中使用

    6、怎样在Struts2中操作国际化
        1)在Action类中使用
            *   继承ActionSupport
            *   通过getText(String key)方法就可以获取配置文件中对应名称的属性值。
            示例代码:
                public class I18nDemo1Action extends ActionSupport {

                    @Override
                    public String execute() throws Exception {
                        // 得到properties文件中信息
                        // I18nDemo1Action.properties文件中:msg=hello world
                        System.out.println(this.getText("msg"));
     
                        return SUCCESS;
                    }
                }
                输出:hello world 


        2)在validation.xml文件中
            *   在同包下创建一个package.properties文件(必须是package开头)
            *   在<message key="属性名"/>标签中使用key来获取值。

            示例代码:

                <!-- 对username属性进行校验 -->
                <field name="username">
                    <!-- 指定username不能为空 -->
                    <field-validator type="requiredstring">
                        <!-- 设置错误信息 -->
                        <message key="nameerror"></message>
                    </field-validator>
                </field>


        3)在JSP页面中使用
            可以使用<s:i18n name="包名.资源名"><s:text name="key"/></s:i18n>来指定从某一个资源文件中获取属性值。
            如果没有使用<s:i18n>指定资源文件名,而是直接使用<s:text>来获取,会从全局配置文件中获取。

            示例代码:

                <s:i18n name="com.wyc.action.package">

                    <s:text name="nameerror"></s:text>
                </s:i18n>


    7、在Struts2的国际化配置文件中使用动态文本
        1)Action中怎样使用
            *   在properties文件中配置
                >   msg=hello world {1} {0}    // 0 1 表示数组下标
            *   在Action类中使用
                >   System.out.println(this.getText("msg", new String[]{"zhangsan", "lisi"}));

                会输出:hello world lisi zhangsan

        2)JSP页面中怎样使用
            *   在properties文件中配置
                >   msg=hello world {1} {0}    // 0 1 表示数组下标
            *   在JSP页面中使用
                <s:i18n name="com.wyc.action.I18nDemo1Action">
                    <s:text name="msg">
                        <s:param>张三</s:param>
                        <s:param>王五</s:param>
                        <s:param>李四</s:param>
                    </s:text>
                </s:i18n>
                页面中会输出:hello world 张三 王五

    ——总结

        1、如何定义配置文件
            *   局部
            *   全局

        2、在哪里使用
            *   Action
            *   JSP
            *   校验配置文件

        3、怎么使用
            *   Action类继承ActionSupport
                >   使用getText()方法获取。
            *   使用struts2标签
                >   <s:i18n>
            *   在配置文件中:
                >   <message key="">

        4、怎样处理动态文本
  • 相关阅读:
    【Codechef】Chef and Bike(二维多项式插值)
    USACO 完结的一些感想
    USACO 6.5 Checker Challenge
    USACO 6.5 The Clocks
    USACO 6.5 Betsy's Tour (插头dp)
    USACO 6.5 Closed Fences
    USACO 6.4 Electric Fences
    USACO 6.5 All Latin Squares
    USACO 6.4 The Primes
    USACO 6.4 Wisconsin Squares
  • 原文地址:https://www.cnblogs.com/wwwwyc/p/6375422.html
Copyright © 2011-2022 走看看