Struts2国际化

 一:简单理解

    国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。

    随着全球经济的一体化,软件开发者应该开发出支持多国语言、国际化的Web应用。对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果。

    国际化文件的命名规则:

          1、基本名.properties 如:message.properties

          2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties 其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。

    Java中已经实现了国际化功能,struts2中只是对该功能进行了整合,以方便我们的使用。

    Struts2中使用到国际化的地方有: 1、jsp页面的国际化; 2、Action信息国际化; 3、转换错误信息的国际化; 4、校验错误信息的国际化;

    Struts2国际化文件分类: 1、全局范围国际化文件 2、包范围国际化文件 3、Action类范围国际化文件。

 

  

    全局范围国际化文件:

    编写一个messages_zh_CN.properties和messages_en_US.properties放在src下。

我在这里配置了两个属性:

messages_en_US:

login.username=username
login.password=password

 

messages_zh_CN:

login.username=\u767B\u5F55\u7528\u6237\u540D
login.password=\u767B\u5F55\u5BC6\u7801

 

在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件:

eg:

            <!-- 配置struts2国际化 value是国际化资源基本名message-->
            <constant name="struts.custom.i18n.resources" value="messages_en_US"/>

      或者

            <constant name="struts.custom.i18n.resources" value="messages_zh_CN"/>

 

(java代码中)国际化获取配置文件值使用:getText("键")

        eg:getText("login.username")  ---------》username。

              或者

           getText("login.username") ------------>登录用户名。

在jsp页面中使用国际化。这里需要使用标签:<s:i18n>标签

eg:

   

 1  <!-- 局部定义使用哪一种国际化语音 -->
 2    <s:i18n name="messages_zh_CN">  
 3    <form action="<%=basePath%>login.action" method="post">
 4              <table>
 5                <tr>
 6                  <td><s:text name="login.username"/></td>
 7                  <td><input type="text" name="user.userName"/></td>
 8                </tr>
 9                <tr>
10                  <td><s:text name="login.password"/></td>
11                  <td><input type="text" name="user.password"/></td>
12                </tr>
13                <tr>
14                 <td colspan="2"><input type="submit" value="<s:text name="login"/>"/></td>
15               </tr>              
16              </table>                             
17     </form>
18    </s:i18n> 

 

 浏览器显示为:

 

 1  <!-- 局部定义使用哪一种国际化语音 -->
 2    <s:i18n name="messages_en_US">  
 3    <form action="<%=basePath%>login.action" method="post">
 4              <table>
 5                <tr>
 6                  <td><s:text name="login.username"/></td>
 7                  <td><input type="text" name="user.userName"/></td>
 8                </tr>
 9                <tr>
10                  <td><s:text name="login.password"/></td>
11                  <td><input type="text" name="user.password"/></td>
12                </tr>
13                <tr>
14                 <td colspan="2"><input type="submit" value="<s:text name="login"/>"/></td>
15               </tr>              
16              </table>                             
17     </form> 
18    </s:i18n> 

浏览器显示为

新技术在不断的更新,该文章仅供参考!(最近好像在准备淘汰Struts)

 

转载于:https://www.cnblogs.com/hellokitty1/p/5083663.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOI经验谈

对于NOI来说&#xff0c;甚至比硬实力更加重要。我觉得一场考试这么几件事要做&#xff1a;看题&#xff0c;选题&#xff0c;分析&#xff0c;编码&#xff0c;调试&#xff0c;测试&#xff0c;骗分。 1、看题 拿到试卷以后的第一件事就是看题。看题不是看小说&#xff0c;要…

ReactiveCocoa源码拆分解析(四)

&#xff08;整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载&#xff09; 上一章节简要的说明了如何实现的热信号。但是像那么写&#xff0c;貌似不是非常优雅。这一章节我们会把冷热信号转换写的跟ReactiveCocoa一样优雅。 Reactive…

用Emacs编写mybatis

<?xml version"1.0" encoding"utf-8"?> 用Emacs编写mybatis用Emacs编写mybatis Table of Contents 1. 效果图2. 配置1 效果图 2 配置 现在web开发&#xff0c;最流行的orm框架非mybatis莫属了&#xff0c;它功能强大&#xff0c;编写简单灵活&…

lambda显式声明返回值

10.21 编写一个lambda&#xff0c;捕获一个局部int变量&#xff0c;并递减变量值&#xff0c;直至它变为0.一旦变量变为0&#xff0c;再调用lambda应该不再递减变量。lambda应该返回一个bool值&#xff0c;指出捕获的变量是否为0. #include<iostream> #include<algori…

【Codeforces Round #452 (Div. 2) C】 Dividing the numbers

【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 n为偶数。 l 1, r n (l,r)放在一组 l,r-- 新的l,r放在另外一组 直到l1r 这个时候,判断两组的和,如果一样的话,分散在两组 差为1否则差为0n为奇数 l 2,r n (l,r)放在一组 l,r-- 新的l,r放在另外一组 直到l1r…

java中reject方法作用_Java BindingResult.rejectValue方法代碼示例

本文整理匯總了Java中org.springframework.validation.BindingResult.rejectValue方法的典型用法代碼示例。如果您正苦於以下問題&#xff1a;Java BindingResult.rejectValue方法的具體用法&#xff1f;Java BindingResult.rejectValue怎麽用&#xff1f;Java BindingResult.r…

java方法参数

Java程序设计语言总是采用值调用。也就是说&#xff0c;方法得到的是所有参数的一个拷贝&#xff0c;特别是方法不能修改传递给它的任何参数变量的内容。 基本类型参数 1&#xff09;X被初始化为percent值的一个拷贝&#xff1b; 2&#xff09;X被乘以3等于30。但是percent仍然…

SaltStack源码分析之:master端执行salt模块大致流程

2019独角兽企业重金招聘Python工程师标准>>> ##JOB执行流程 先看下官网对于master端的工作流程的介绍&#xff1a; The Salt master works by always publishing commands to all connected minions and the minions decide if the command is meant for them by ch…

myecplise新建Maven项目Filter选什么,使用myeclipse建立maven项目

myecplise新建Maven项目Filter选什么 使用myeclipse建立maven项目 1234567分步阅读maven是管理项目的&#xff0c;myeclipse是编写代码的。第一次写项目都要配置好多东西&#xff0c;很麻烦&#xff0c;now 来看看怎样新建一个maven项目。 工具/原料 myeclipsemaven方法/步骤 1…

python参数传递时不构造新数据对象_关于函数的参数传递(parameter passing),以下选项中描述错误的是_学小易找答案...

【单选题】下面代码的输出结果是: a [] for i in range(2,10): count 0 for x in range(2,i-1): if i % x 0: count 1 if count 0: a.append(i) print(a)【单选题】Python3.0正式发布的年份是【单选题】以下选项中,对于函数的定义错误的是【单选题】关于函数的参数传递(pa…

关于TCP/IP与数据传输

一、TCP/IP的具体含义&#xff1a; 从字面意思来讲&#xff0c;很多人会认为TCP/IP是指TCP与IP这两种协议。有时确实也可以说是这两种协议&#xff0c;但是大部分情况下所说的是利用IP进行通信时所必须用到的协议群的统称。具体来说IP,ICMP,TCP,UDP,FTP以及HTTP等都属于TCP/IP协…

geohash php_空间索引-geohash算法实现

算法简介geohash是实现空间索引的一种算法,其他实现空间索引的算法有:R树和其变种GIST树、四叉树、网格索引等算法基本原理geohash算法将地球理解为一个二维平面&#xff0c;将平面递归分解成更小的子块&#xff0c;每个子块在一定经纬度范围内拥有相同的编码&#xff0c;这种方…

ActiveReports 报表控件V12新特性 -- 新增JSON和CSV导出

ActiveReports 报表控件V12新特性 -- 新增JSON和CSV导出 ActiveReports 是一款专注于 .NET 平台的报表控件&#xff0c;全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求&#xff0c;作为专业的报表工具为全球超过 300,000 开发人员提…

Codeforces Round #112 (Div. 2)---A. Supercentral Point

Supercentral Pointtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOne day Vasya painted a Cartesian coordinate system on a piece of paper and marked some set of points (x1, y1), (x2, y2), ..., (xn,…

php imap配置,怎么为PHP编译imap扩展?

为PHP编译imap扩展的方法&#xff1a;首先安装“imap-open2007e”&#xff1b;然后下载源代码&#xff1b;接着准备好系统的“imap-open”环境&#xff1b;最后进入“./ext/extension/imap/”文件夹下执行“make”命令即可。怎么为PHP编译imap扩展&#xff1f;最近为项目增加了…

加载指定路径下所有文件

工作中经常遇到加载某个文件夹下的所有文件&#xff0c;然后对文件遍历&#xff0c;今天写代码时遇到一个好的类ArrayDeque&#xff0c;整理一下&#xff0c;做一下笔记 下面写了一个测试类 package com.hpzx.test;import java.io.File; import java.util.ArrayDeque; import j…

每日站立会议个人博客二

事件昨天干了什么优化了商品详细信息界面的多个图片显示方式今天要做什么对商品搜索结果页面进行深度优化&#xff0c;增加搜索筛选功能遇到的问题多图片显示实现过程中&#xff0c;图片的排列方式出现了问题。转载于:https://www.cnblogs.com/mqlblog/p/8063718.html

vmware安装minimal centos报错/etc/rc5.d/s99local : line

2019独角兽企业重金招聘Python工程师标准>>> 有人用vmware安装minimal centos报错/etc/rc5.d/s99local : line:25 : eject : command not found 。我们看下完整报错内容&#xff1a; Installing VMware Tools, please wait...mount: special device /dev/hda does n…

php print div,JavaScrip实现PHP print_r的数功能(三种方法)

方法一function print_r(theObj) {var retStr ;if (typeof theObj object) {retStr ;for (var p in theObj) {if (typeof theObj[p] object) {retStr [p] > typeof(theObj) ;retStr print_r(theObj[p]) ;} else {retStr [p] > theObj[p] ;}}retStr ;}re…