zoukankan      html  css  js  c++  java
  • struts2系列(四):struts2国际化的多种方式

    一、struts2国际化原理

    根据不同的Locale读取不同的文本。

    例如有两个资源文件:

    第一个:message_zh_CN.properties

    第二个:message_en_US.properties

    当Locale=zh_CN时,就去第一个文件查找;当Locale=en_US时,就去第二个文件查找。

    二、简单方式实现国际化

    1. 新建一个maven的web项目,项目结构如下:

    2. 在src/main/java目录下新建两个国际化资源文件message_zh_CN.properties、message_en_US.properties,然后将各个key-value对添加到这两个文件中,key字段一定要统一

    message_zh_CN.properties:

    info=u4FE1u606F
    info_not_empty=u4FE1u606Fu4E0Du80FDu4E3Au7A7A
    submit=u63D0u4EA4

    message_en_US.properties:

    info=information
    info_not_empty=info not empty
    submit=submit

    3. 配置struts.properties文件,这个文件也是放在src/main/java目录下的

    struts.cunstom.i18n.resources=message
    struts.i18n.encoding=utf-8

    struts.cunstom.i18n.resources=message是为了告诉程序,国际化资源文件是message开头命名的资源文件。这个需要在struts的xml文件里面配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7 
     8     <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
     9     <constant name="struts.custom.i18n.resources" value="message" />
    10 
    11     <package name="default" namespace="/" extends="struts-default">
    12         
    13 
    14     </package>
    15 
    16 </struts>

    4. Struts2的页面国际化,默认要走action才行,如果直接访问jsp文件,是没有国际化效果的,所以定义一个语言的LangAction,然后在struts.xml文件里面配置

    LangAction:

     1 package com.study.struts2.demo;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 public class LangAction extends ActionSupport {
     6 
     7     /**
     8      * 
     9      */
    10     private static final long serialVersionUID = -5273948217476741834L;
    11 
    12     @Override
    13     public String execute() throws Exception {
    14         // TODO Auto-generated method stub
    15         return SUCCESS;
    16     }
    17 
    18 }

    struts.xml:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7 
     8     <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
     9     <constant name="struts.custom.i18n.resources" value="message" />
    10 
    11     <package name="default" namespace="/" extends="struts-default">
    12         
    13         <action name="lang" class="com.study.struts2.demo.LangAction">
    14             <result name="success">index.jsp</result>
    15         </action>
    16 
    17     </package>
    18 
    19 </struts>

    5. 实现在index.jsp页面中的中英文切换

     1 <%@ page language="java" pageEncoding="UTF-8"%>
     2 <!--引入struts2的标签  -->
     3 <%@ taglib prefix="s" uri="/struts-tags"%>
     4 <body>
     5     <!--中英文切换按钮  -->
     6     <a href="lang.action?request_locale=zh_CN">中文</a>
     7     <a href="lang.action?request_locale=en_US">English</a>
     8 
     9     <p>
    10         <a href="<s:url action='hello'/>">Hello World</a>
    11     </p>
    12 
    13     <!--struts2的取值标签  value="<s:property value="msg" />"输入正确的被保留 -->
    14     <form action="hello.action">
    15         <!-- 信息: -->
    16         <s:text name="info"></s:text>
    17         <input type="text" name="msg" value="<s:property value="msg" />" />
    18         <s:property value="fieldErrors['msg'][0]" />
    19         <br> <input type="submit" value="<s:text name="submit"></s:text>">
    20     </form>
    21 
    22     <!--验证通过后显示  -->
    23     <h2>
    24         <s:property value="msg" />
    25     </h2>
    26 </body>
    27 </html>

    5. 在tomcat里面启动项目输入地址验证http://localhost:8080/TestStruts2

    中文页面:

    英文页面:

    三、过滤器方式实现国际化

    后续补充。。。。。

    四、把Locale放到session里面,从session里面取出Locale作国际化

    后续补充。。。。。

  • 相关阅读:
    CriticalSection关键代码区(临界区)
    互斥对象(Mutex)、事件对象(Event) 与 关键代码段(CriticalSection) 的比较(互斥量Mutex 保证只有一个实例运行)
    VC popup Menu,弹出菜单
    C++ virtual inherit, 虚基类
    互斥量Mutex
    sprintf,swprintf,_stprintf
    图灵图书列表
    IDirect3DDevice9::EvictManagedResources
    过年去了,消失好久
    《C++编程规范》中文版上市
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7756174.html
Copyright © 2011-2022 走看看