public class I18nAction extends ActionSupport {
    private static final long serialVersionUID = -6933309304624396640L;

    public String reg() {
        return "success";
    }

    public String toRegView() {
        System.out.println("toRegView");
        return "regView";
    }
}

struts.xml配置文件

<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
    <package name="I18nPkg" namespace="/i18n" extends="struts-default">
        <action name="I18nAction_*" class="struts2.i18n.I18nAction" method="{1}">
            <result name="success">/i18n/reg.jsp</result>
            <result name="regView">/i18n/reg.jsp</result>
        </action>
    </package>
</struts>

reg.jsp

<html>
    <head>
        <title>reg.jsp</title>
    </head>
    <body>
        <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml">
            <s:textfield name="name" key="label.name" />  标签中使用key   就会自动使用国际化功能
            <s:submit />
        </s:form>
    </body>
</html>

默认的配置文件:

I18nAction.properties    内容如下:

label.name=userName

简体中文配置文件:

I18nAction_zh_CN.properties

label.name=用户名

美式英语的配置文件  I18nAction_en_US.properties

label.name=要显示的名称

以此命名规则:

英式英语的配置文件  I18nAction_en_UK.properties

完成上述的步骤即可实现国际化,可以通过修改浏览器选项中的语言,来修改语言测试、

有时候是想让用户手动的去选择国际化,那么如何让用户从给定的国际化中选择语言呢????????

使用ognl表达式来构建各种语言的map对象。

<html>
    <head>
        <title>reg.jsp</title>
    </head>
    <body>
        <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml">
            <s:select name="request_locale"
                      list="#{'zh-CN':'简体中文'
                  'zh-TW':'繁体中文',
                  'en-US':'美式英语',
                  'en-UL':'英式英语',
                               'ja-JP':'日语'}"
                      listKey="key"
                      listValue="value"
                      onchange="this.form.submit();"
                      value="locale">  一定要设置value。否则不会回显,每次选择其他的后,语言选择框又选择第一个了。
Struts2中有个i18n的拦截器,就把当前选择的语言存储到session的属性中,key为locale
</s:select> <s:textfield name="name" key="label.name" /> <s:submit /> </s:form> </body> </html>

可以在源码中有个Local.class文件,里面定义了各种国际化的语言。ognl表达式可以调用静态的方法。同样可以达到上面的效果。

<html>
    <head>
        <title>reg.jsp</title>
    </head>
    <body>
        <s:form namespace="/i18n" action="I18nAction_toRegView" method="post" theme="xhtml">
            <s:select name="request_locale"
                      list="#{@java.util.Locale@CHINA:@java.util.Locale@CHINA.getDisplayName(@java.util.Locale@CHINA),
                            @java.util.Locale@TAIWAN:@java.util.Locale@TAIWAN.getDisplayName(@java.util.Locale@TAIWAN),
                            @java.util.Locale@US:@java.util.Locale@US.getDisplayName(@java.util.Locale@US),
                            @java.util.Locale@UK:@java.util.Locale@UK.getDisplayName(@java.util.Locale@UK),
                            @java.util.Locale@JAPAN:@java.util.Locale@JAPAN.getDisplayName(@java.util.Locale@JAPAN)}"
                      listKey="key"
                      listValue="value"
                      onchange="this.form.submit();"
                      value="locale">
            </s:select>
            <s:textfield name="name" key="label.name" />
            <s:submit />
        </s:form>
    </body>
</html>

Struts2实现国际化的更多相关文章

  1. 十四、Struts2的国际化

    十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 -->     <constant name="struts.c ...

  2. JavaWeb框架_Struts2_(八)----->Struts2的国际化

    这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...

  3. struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

    其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...

  4. struts2 资源国际化

    web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp ...

  5. Struts2的国际化入门

    Struts2的国际化入门 Struts2国际化是建立在Java国际化的基础上的,一样是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再 ...

  6. 浅谈struts2的国际化----i18n

    可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization    i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...

  7. 【Struts2】 国际化

    一.概述 二.Struts2中国际化: 2.1 问题1 全局 局部 2.2 问题2 2.3 问题3 2.4 问题4 在Action中怎样使用 在JSP页面上怎样使用 一.概述 同一款软件 可以为不同用 ...

  8. (十四)struts2的国际化

    一.国际化的概念 国际化是指web程序在运行时,根据客户端请求的国家.语言的不同而显示不同的界面. 例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息.  ...

  9. Struts2之国际化

    时间:2017-1-11 11:12 --国际化Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可.要使用国际化的Action必须继承ActionSupport.1.什么是 ...

  10. Struts2 internationalization(国际化)

    1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...

随机推荐

  1. HDU 2209 翻纸牌游戏(DFS)

    题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦 ...

  2. TortoiseGit - 处理冲突

    处理冲突 冲突:远程的master已经被其他人更新到 2repo add 12,但是自己当前的工作区在未pull到最新前,增加了1repo add 12的改动. 右击最新的节点,选择Merge to ...

  3. Windows下PHP(Thread Safe与Non Thread Safe)版本说明

    转载“http://www.taoz11.com/archives/300.html” linux下直接下载源码,在服务器上编译即可,发现windows下有4个版本: VC9 x86 Non Thre ...

  4. TouchSlide滚动插件BUG

    TouchSlide滚动切换效果时 nextCell设定自己的class名后无效,需要用".next"或不设置

  5. Python 学习笔记7

    今天很残酷,明天很残酷,后天很美好.但绝大多数人会死在明天的路上.只有真正的勇士才能看到后天的太阳! Python学习是枯燥的.但是一定要坚持! 昨天学习了数据结构和模块. 今天学习输入和输出.错误与 ...

  6. asp.net URL DES加密 什在URL中的使用

    DES 加密 有时会有 + = 这些特殊字符串 Server.UrlDecode(Request["UserName"]) //能解决  = 号,但是 +号会变成空格 HttpUt ...

  7. APP测试--功能测试

    1.1 了解需求 这一点,不但是功能测试,是所有测试都需要的第1步.通过需求文档,与产品经理的沟通,与开发的沟通,用户的使用习惯等各方法,了解APP的需求. 1.2 编写测试用例 当然之前可能是测试计 ...

  8. hdu 5493 Queue treap实现将元素快速插入到第i个位置

    input T 1<=T<=1000 n 1<=n<=100000 h1 k1 h2 k2 ... ... hn kn 1<=hi<=1e9  0<=ki&l ...

  9. json处理三部曲之第一曲:利用json-lib-xxx.jar处理json

    json-lib-xxx.jar包必需5个依赖包(实测): ezmorph-xxx.jar commons-lang-xxx.jar commons-beanutils-xxx.jar commons ...

  10. ios简单实现如果没有开启定位,提示开启系统软件定位功能

    if([CLLocationManager locationServicesEnabled] && [CLLocationManager authorizationStatus] == ...