java中struts2国际化实现方法

在struts2中,国际化的方式其实有两种,第一种方式的大致思路是,根据所传入的语言和国家名称,创建一个Locale实例,然后将这个实例设置到作用域中,从而就可以根据不同的需要来加载不同的资源文件,这个方式需要写java代码。而struts2中还有一种更加简单的方式,本文就只简要绍介一下第二种方式的实现。
首先页面上的效果默认是这样的
这里写图片描述
当我们点击“中文”或“英文”时,页面的“用户名”和“密码”项可以切换成不同的语言显示。下面是英文状态显示
这里写图片描述
具体是怎样实现的,下面就简单说明一下。
在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>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources" value="MessageResource" />
    <package name="default" namespace="/" extends="struts-default">

        <action name="index">
            <result>
                /index.jsp
            </result>
        </action>
    </package>


</struts>

这里需要注意的是
常量struts.custom.i18n.resources属性的value值MessageResource是相关资源文件名称的前缀,其中资源文件在这里是这样命名的

这里写图片描述
后面两个是java所支持的语言和国家,资源文件的内容如下:
英文内容:

index.username=username
index.password=password

中文内容:

index.username=\u7528\u6237\u540D
index.password=\u5BC6\u7801

这个是中文文字转码后的结果,是为了避免乱码产生
这种方式我们甚至连action的java代码都不用写,这里要做的只是在配置文件中设置一下跳转页面就可以了,最后我们在jsp页面中直接调用配置好的action

<a href="/struts2i18n/index?request_locale=zh_CN">中文</a>|<a href="/struts2i18n/index?request_locale=en_US">英文</a>
    <s:form action="/index" method="post">
        <s:textfield name="username" key="index.username"></s:textfield>
        <s:textfield name="password" key="index.password"></s:textfield>
        <s:submit value="提交"/>
    </s:form>

这里要注意的是,在调用action时,我们要将 java支持的语言和国家当作参数值传入,这里的变量全称为request_locale不可改变,textfield元素中的key属性值对应资源文件相关的key值 ,其实在jsp页面接收资源文件中的值除了以上方法外,还有另外一种,就是通过<s:text name="">元素接收,其中name属性值对应资源文件相关key值。

猜你喜欢

转载自blog.csdn.net/yangkaige111/article/details/79685045