时间: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、怎样处理动态文本

Struts2之国际化的更多相关文章

  1. 十四、Struts2的国际化

    十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 -->     <constant name="struts.c ...

  2. JavaWeb框架_Struts2_(八)----->Struts2的国际化

    这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...

  3. struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

    其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...

  4. struts2 资源国际化

    web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp ...

  5. Struts2的国际化入门

    Struts2的国际化入门 Struts2国际化是建立在Java国际化的基础上的,一样是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再 ...

  6. 浅谈struts2的国际化----i18n

    可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization    i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...

  7. 【Struts2】 国际化

    一.概述 二.Struts2中国际化: 2.1 问题1 全局 局部 2.2 问题2 2.3 问题3 2.4 问题4 在Action中怎样使用 在JSP页面上怎样使用 一.概述 同一款软件 可以为不同用 ...

  8. (十四)struts2的国际化

    一.国际化的概念 国际化是指web程序在运行时,根据客户端请求的国家.语言的不同而显示不同的界面. 例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息.  ...

  9. Struts2 internationalization(国际化)

    1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...

随机推荐

  1. 用Nextcloud在树莓派上布置你的个人网盘“NAS”

    用Nextcloud在树莓派上布置你的个人网盘"NAS" 这次用的是目前最新的 Raspbian Stretch 系统,基于 Debian 9. 软件程序是 Nextcloud 1 ...

  2. Leetcode:637. 二叉树的层平均值

    Leetcode:637. 二叉树的层平均值 Leetcode:637. 二叉树的层平均值 Talk is cheap . Show me the code . /** * Definition fo ...

  3. 微信机器人项目开发--python

    1.外网穿透工具下载与注册[http://ngrok.ciqiuwl.cn/] 2.公众号审请 3.代码编写 糗事百科接口 # _*_ coding:utf-8 _*_ import requests ...

  4. 解决proto文件转换时提示“Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. ”

    前言: 想将.proto文件转换成.pb文件时一直报错,一开始以为是文件编码格式的问题,后来将文件改成windows下的utf-8格式后,又出现了新的报错(见下图).百度了很久,才找到解决方法. &q ...

  5. C#.NET 国密SM3withSM2签名与验签 和JAVA互通

    C# 基于.NET FRAMEWORK 4.5 JAVA 基于 JDK1.8 一.要点 1.签名算法:SM3withSM2. 2.签名值byte[] 转字符串时,双方要统一,这里是BASE64. 二. ...

  6. Maven-内部多个项目依赖自动升级版本的部署

    需要自动升级版本的AAA项目发布 (有内部依赖时) 步骤比较复杂, 有一些需要根据实际情况调整. 考虑了以下几种可能性: 依赖模块的版本有更新 依赖模块版本没更新 依赖模块的版本号: 直接定义, 用属 ...

  7. C++面向对象 1(类-封装)

    1 //类和对象 2 //C++ 面向对象 三大特性 : 封装 继承 多态 3 4 //设计一个圆类,求圆的周长 5 //圆周长 = 2*PI * 半径 6 7 #include <iostre ...

  8. Android NDK 直播推流与引流

    本篇介绍一下直播技术中推流与引流的简单实现. 1.流媒体服务器测试 首先利用快直播 app (其他支持 RTMP 推流与引流的 app 亦可)和 ffplay.exe 对流媒体服务器进行测试. 快直播 ...

  9. 终于有人把Android技术面试知识体系整理出来了,这些学习手册让你的面试稳如泰山

    前言 年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心.想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构.整体包括Java.Android.算法.计算机基础等等,相应的 ...

  10. Redis实战-详细配置-优雅的使用Redis注解/RedisTemplate

    1. 简介 当我们对redis的基本知识有一定的了解后,我们再通过实战的角度学习一下在SpringBoot环境下,如何优雅的使用redis. 我们通过使用SpringBoot内置的Redis注解(文章 ...