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、怎样处理动态文本
  • 相关阅读:
    Mysql优化之Explain查询计划查看
    map转listmap
    代码大全
    cas
    日志
    xml模板
    springboot
    日志
    spring应用
    拆分表中sheet
  • 原文地址:https://www.cnblogs.com/wwwwyc/p/6375422.html
Copyright © 2011-2022 走看看