• 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 }

  • 相关阅读:
    请输入关键字
    如何把心动变成行动
    理解ASP.NET MVC系列之一:ASP.NET MVC基于MVC设计模式
    window.showModalDialog()
    visual studio 2010 winform程序不能添加对system.web的引用[转载]
    理解ASP.NET MVC系列之三:从URL到Route
    Dan计划:重新定义人生的10000个小时
    为Visual Studio添加配色方案
    [转载]用缓存服务器负载均衡 提数据库查询效率
    Json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/duanjiapingjy/p/7747539.html
Copyright © 2020-2023  润新知