• java struts2入门学习---国际化


    一、国际化的概念

    1、不同国家的人访问同一个网站,显示的语言不同。

    2、对JSP页面进行国际化

    属性(properties)文件命名规则:基名---语言--国家如, message_zh_CN.properties

    >>>使用标签获取相对应的值,如:

    <s:textfield key="login.username" name="username"/> 
    <s:submit key="login.submit"/>

    login.username与属性(properties)文件中的key值相对应。

    >>>给{0},{1}等占位符动态赋值

    <s:text name="属性中的key">

    <s:param>属性值</s:param>

    二、实例1

    1、需求:访问同一个页面,不同语言的访问者,显示不同语言的页面

    1)英文访问者访问页面

    2)中文访问者访问页面

     

     

    2、代码分析

    login_i18n.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags"  prefix="s"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>login</title>
    </head>
    <body>
        <s:form action="LoginAction" method="POST">
            <s:textfield key="login.username" name="username"/>    
            <s:submit key="login.submit"/>
        </s:form>
    </body>
    </html>
    View Code

    message_en_US.properties

    login.username=USERNAME
    login.submit=LOGIN

    message_zh_CN.properties

    login.username=u7528u6237u540D
    login.submit=u767Bu5F55

    struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <!--<include file="config/upload.xml"></include>-->        
        <!-- 加载其他配置文件 -->
        <!-- <include file="config/upload-interceptor.xml"></include> -->
        <constant name="struts.custom.i18n.resources"  value="message"></constant>
    </struts>

    struts2的拦截器在项目启动时就已经加载到内存中了,主要通过struts.xml,这里只是测验国际化,所以将其他都注释掉了,在常量中配置i18n的拦截器的值,这里值就为基值,不需要将语言和国家带上;然后当jsp页面调用值时,使用struts2自带的标签将用户对应语言的值加载进来。

    拦截器的作用就是将配置文件加载到内存中,标签的作用就是将对应语言的值加载到页面中去。

    三、实例2

    1、需求:

    2、代码分析

    在实例1的基础上增加动态参数注入。

    message_en_US.propertiest和message_zh_CN.properties中增加两个参数如下所示:

    login.hello=hello {0},I am {1}

    在login_i18n.jsp页面中新增加如下代码:

        <hr>
        <s:text name="login.hello">
            <s:param>tom</s:param>
            <s:param>amos</s:param>
        </s:text>

    使用<s:text>标签来调用带参数的属性值,同时使用<s:param>标签来给参数赋值,其中顺序就与参数的顺序对应。

    3.综合运用

    能不能将参数值不写入到jsp页面中,因为这样很不方便,可不可以直接配置到properties属性文件中?

    login_i18n.jsp页面中的参数内容改为如下:

    <s:text name="login.hello">
            <s:param><s:text name="login.tom"></s:text></s:param>
            <s:param><s:text name="login.amos"></s:text></s:param>
    </s:text>

    在properties文件中分别配置如下:

    login.tom=TOM
    login.amos=AMOS
    /*******us上面,cn下面********/
    login.tom=u6C64u59C6
    login.amos=u963Fu83ABu65AF

    这样将参数配置到properties中使用<s:text >标签再获取属性(properties)文件中的值,再根据不同语言进行显示,如下所示:

    1)中方显示

     2)英文显示:

     本文只是讲了简单的配置,具体实现可参考I18nInterceptor拦截器的实现。

     本文源码https://github.com/amosli/strut2_learn    struts2 国际化

  • 相关阅读:
    LoadRunne遇到的一些问题FAQ(持续更新...)
    LoadRunner11下载、安装与破解
    LoadRunner之录制你的第一个脚本
    appium+Linux环境安装配置
    appium-FAQ(持续更新...)
    appium启动运行log分析
    利用Unity3D与Oculus实现机器情绪安抚师的一种方案
    利用Unity3D实现多平台增强现实网络游戏的一种方案
    Ubuntu16.04安装NVIDIA驱动时的一些坑与解决方案
    你的计算机也可以看懂世界——十分钟跑起卷积神经网络(Windows+CPU)
  • 原文地址:https://www.cnblogs.com/amosli/p/3527709.html
Copyright © 2020-2023  润新知