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作国际化

    后续补充。。。。。

  • 相关阅读:
    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介
    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学
    001 Android Studio 首次编译执行项目过程中遇到的几个常见问题
    Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
    Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验
    监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile
    轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
    轻量级ORM框架——第一篇:Dapper快速学习
    CF888G Xor-MST(异或生成树模板)
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7756174.html
Copyright © 2011-2022 走看看