zoukankan      html  css  js  c++  java
  • Struts2学习笔记(八)——国际化

    1、Struts2国际化介绍

    国际化即internationalization简称i18n. 为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容是key-value键值对。

    资源文件的命名可以是如下3种形式:

    • baseName_language_country.properties
    • baseName_language.properties
    • baseName.properties

    其中baseName是资源文件的基本名称,用户可以自由定义,而language和country都不可随意变化,必须是Java所支持的语言和国家。

    2、国际化资源文件的分类

     Struts2提供了4种方式来加载国际化资源文件: 
     1).全局范围,可以放置在任意位置,但是必须要在struts.xml文件中通过常量引入资源文件。 
       baseName_language_country.properties.如message_zh_CN.properties 

    1 <!--这是在com.sunny.action包下-->
    2 <constant name="struts.custom.i18n.resources" value="com.sunny.action.message"></constant>
    3 <!--这是在src下-->                
    4 <constant name="struts.custom.i18n.resources" value="message"></constant>                

     2).包范围,某个包下。 

       package_language_country.properties.如package_zh_CN.properties 
     3).类范围,在该类同一路径下。 
       actionName_language_country.properties.如LoginAction_zh_CN.properties 
     4).临时资源文件,在jsp页面使用<s:i18n>标记来指定classes路径下的资源文件。 

    1 <s:i18n name="com.sunny.action.I18NAction">
    2    <s:text name="GOOD"></s:text>
    3 </s:i18n>

    3、Struts2使用国际化消息

    Struts2使用国际化消息主要在如下3种方式:

     1)在JSP页面中使用国际化消息,可以使用Struts2的<s:text…/>标签,该标签可以指定一个name属性,该属性指定了国际化资源文件中的key.

    1 <s:text name="login.username"></s:text>
    2 <s:textfield name="username" key="login.username"></s:textfield>

    还可以输出带占位符的信息,比如有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:

    <s:text name="login.welcome">
      <s:param>username</s:param>
    </s:text>

     2)在Action类中使用国际化消息,可以使用ActionSupport类的getText()方法,该方法可以接受一个name参数,该参数指定了国际化资源文件中的key .

    1 getText("login.username");

     还可以使用带占位符的信息。比如有一个 login.welcome = 你好{0},那么可以用下面这种方式来显示:

      

    1 String params[] = {"张三"};
    2 String welcome = getText("login.welcome", params);

     3)在表单元Label里使用国际化信息,可以为该表单标签指定一个key属性, 该key指定了国际化资源文件中的key.

    4、国际化实例

      1)创建全局国际化资源文件

    Login_zh_CN.properties

    1 item.name=姓名
    2 item.password=密码

    Login_en_US.properties

    1 item.name=name
    2 item.password=password

      2)在struts.xml文件中配置国际化资源文件

     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     <constant name="struts.custom.i18n.resources" value="Login" />
     4     
     5     <package name="default" namespace="/" extends="struts-default">
     6         <action name="i18nAction" class="com.sunny.action.I18NAction">
     7             <result>/input.jsp</result>
     8         </action>
     9     </package>
    10 
    11 </struts>

      3)创建jsp页面

    1 <body>
    2  <a href="${pageContext.servletContext.contextPath}/i18nAction?request_locale=zh_CN">中文</a>
    3  <a href="${pageContext.servletContext.contextPath}/i18nAction?request_locale=en_US">English</a>
    4  <form action="${pageContext.servletContext.contextPath}/login.action">
    5     <s:textfield name="name" key="item.name"/><br>
    6     <s:textfield name="password" key="item.password"/><br>
    7  </form>
    8 </body>

      4)jsp显示界面

  • 相关阅读:
    脚手架 vue-cli
    vue文件添加编译
    客户合法性校验(密文hamc方法)
    socket的其他方法
    socket实现目录路径的相关操作
    socket实现OS的切换目录
    socket大文件传输(解决粘包)
    socket中的粘包理解
    socket实现在python中调用操作系统的命令(subprocess)
    socket实现文件的上传
  • 原文地址:https://www.cnblogs.com/xiaolongSunny/p/4656775.html
Copyright © 2011-2022 走看看