zoukankan      html  css  js  c++  java
  • struts2国际化相关问题

    国际化资源文件的方式:

      Action范围的
      包范围的
      临时的
      全局的(推荐)

    一、配置全局的国际化资源文件
      1.在类路径下,创建国际化资源文件
        baseName.properties
        baseName_zh_CN.properties
        baseName_en_US.properties
        注:baseName的取值随意
      2.在国际化资源文件中键入键值对
      (1)不带占位符
        name=用户名(baseName_zh_CN.properties)
        name=UserName(baseName_en_US.properties)
      (2)带占位符
        time=时间:${0}(baseName_zh_CN.properties)
        time=Time:${0}(baseName_en_US.properties)
      3.在struts.xml文件中配置国际化资源文件的基名
        <constant name="struts.custom.i18n.resources" value="baseName"></constant>

    二、访问国际化资源文件
      1.在Action类中
        如果Action类implements TextProvider,使用getText方法
      (1)不带占位符
        getText("name");
      (2)带占位符
        getText("time",Arrays.asList(new Date()));
      2.在jsp页面
      (1)不带占位符
        <s:textfield name="username" key="name"></s:textfield>或
        <s:textfield name="username" label="%{getText('name')}"></s:textfield>
      (2)带占位符
        使用<s:text>的<s:param>子标签来填充占位符
        <s:text name="time">
          <s:param value="date"></s:param>
          <!-- 假设值栈中有一个date属性 -->
        </s:text>

    三、使用超链接进行国际化切换
      <a href="languageConvert.action?request_locale=en_US">english</a><br>
      <a href="languageConvert.action?request_locale=zh_CN">中文</a><br>
      执行过程:
      i18n拦截器(默认拦截器栈的一员)会自动查找请求中是否包含一个名为request_locale的请求参数,若有,拦截器就将该请求参数的值转换为Locale对象并保存在session域对象中。
      所以,在请求的超链接中加上名为request_locale的请求参数即可。请求参数的值必须是“语言_国家”。

    四、在国际化资源文件中访问值栈中的属性
      使用${}
      例如在baseName_zh_CN.properties中,假设值栈中有一名为date的属性
        time=时间:${date }

  • 相关阅读:
    用ruby抓取网页
    [转] 从项目管理角度看敏捷开发
    ruby学习笔记(9)
    [转] 从项目管理角度看敏捷开发
    ruby学习笔记(8)
    ruby学习笔记(7)
    [转] 什么是敏捷开发
    netbeans tomcat
    maven
    jersey
  • 原文地址:https://www.cnblogs.com/duanjiapingjy/p/7747539.html
Copyright © 2011-2022 走看看