struts2 国际化

概述

Struts2 国际化是建立在 Java 国际化基础上的:

  - 为不同国家/语言提供对应的消息资源文件

  - Struts2 框架会根据请求中包含的 Locale 加载对应的资源文件

  - 通过程序代码取得该资源文件中指定 key 对应的消息

配置国际化资源文件

  I.   Action 范围资源文件: 在Action类文件所在的路径建立名为 ActionName_language_country.properties 的文件

  II.  包范围资源文件: 在包的根路径下建立文件名为 package_language_country.properties 的属性文件,一旦建立,处于该包下的所有 Action 都可以访问该资源文件。注意:包范围资源文件的 baseName 就是package,不是Action所在的包名。

  III. 全局资源文件

    > 命名方式: basename_language_country.properties
        > struts.xml <constant name="struts.custom.i18n.resources" value="baseName"/>

  IV.  国际化资源文件加载的顺序如何呢 ? 离当前 Action 较近的将被优先加载.

如何在页面上 和 Action 类中访问国际化资源文件的  value 值

  I. 在 Action 类中. 若 Action 实现了 TextProvider 接口, 则可以调用其 getText() 方法获取 value 值

    > 通过继承 ActionSupport 的方式。  

  II. 页面上可以使用 s:text 标签; 对于表单标签可以使用表单标签的 key 属性值

<s:textfield name="username" key="username"></s:textfield>

    > 若有占位符, 则可以使用 s:text 标签的 s:param 子标签来填充占位符
        > 可以利用标签和 OGNL 表达式直接访问值栈中的属性值(对象栈 和 Map 栈)

    time=Time:{0}<s:text name="time"><s:param value="date"></s:param></s:text>------------------------------------time2=Time:${date}<s:text name="time2"></s:text>

实现通过超链接切换语言.

  I.  关键之处在于知道 Struts2 框架是如何确定 Local 对象的 !

  II. 可以通过阅读 I18N 拦截器知道.

  III. 具体确定 Locale 对象的过程:

    > Struts2 使用 i18n 拦截器 处理国际化,并且将其注册在默认的拦截器栈中

    > i18n拦截器在执行Action方法前,自动查找请求中一个名为 request_locale 的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设为用户默认的Locale(代表国家/语言环境)。并把其设置为 session 的 WW_TRANS_I18N_LOCALE 属性

    > 若 request 没有名为request_locale 的参数,则 i18n 拦截器会从 Session 中获取 WW_TRANS_I18N_LOCALE 的属性值,若该值不为空,则将该属性值设置为浏览者的默认Locale

    > 若 session 中的 WW_TRANS_I18N_LOCALE 的属性值为空,则从 ActionContext 中获取 Locale 对象。

  IV.  具体实现: 只需要在超连接的后面附着  request_locale 的请求参数, 值是 语言国家 代码.

    <a href="testI18n.action?request_locale=en_US">English</a><a href="testI18n.action?request_locale=zh_CN">中文</a>

     > 注意: 超链接必须是一个 Struts2 的请求, 即使 i18n 拦截器工作!

 

转载于:https://www.cnblogs.com/linyueshan/p/5750832.html

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

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

相关文章

我的Mac os x中的nginx配置文件nginx.conf

环境: Mac os x 10.10.3 xcode6.3 在mac下用brew install nginx安装好了nginx&#xff0c;增加对php的支持&#xff0c;完整的nginx.conf文件内容如下: #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log lo…

C程序中如何获取shell命令执行结果和返回值

如果在C程序中调用了shell命令&#xff0c;那么往往希望得到输出结果以及命令执行的返回布尔值。在这里分为两步来处理&#xff1a; 1.使用 popen 与 pclose 来执行shell命令&#xff1b; 2.使用‘echo $?’来获取上一条指令执行状态&#xff0c;如果为0那么标识成功执行&am…

去除le-table表格的hover效果

css代码&#xff1a; 如果不生效&#xff0c;就单独的放在一个style标签内&#xff0c;但是单独放会影响全局 <style>/* 首先去除默认的hover效果 *//deep/.el-table--enable-row-hover .el-table__body tr:hover > td {background-color: rgba(0, 0, 0, 0) !importa…

使用 Chrome Timeline 来优化页面性能

使用 Chrome Timeline 来优化页面性能有时候&#xff0c;我们就是会不由自主地写出一些低效的代码&#xff0c;严重影响页面运行的效率。或者我们接手的项目中&#xff0c;前人写出来的代码千奇百怪&#xff0c;比如为了一个 Canvas 特效需要同时绘制 600 个三角形&#xff0c;…

bash shell函数的定义及变量的简单说明

From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html 函数&#xff1a; “函数是一种脚本内脚本”&#xff0c;程序员很难想像没有函数的日子&#xff0c;至少我会比较痛恨。 所以了解函数的定义也就是学习bash的一大要点了。 函数大大增强了shell的编程能力&…

脚本中判断Shell命令执行结果

与C程序中判断同理&#xff0c;只是语法差异&#xff0c;提一点&#xff0c;在这里尤其需要注意 Shell 的语法规则:-D。 Code&#xff1a; #&#xff01;bin/shifconfig if [ $? -eq 0 ]; thenecho "succeed!" elseecho "failed!" fi

el-table点击某行高亮;el-table设置hover效果;监听el-table点击某行变色;去除el-table的hover效果;监听el-table的hover事件

以下代码可直接复制使用 无需任何修改 注意&#xff1a;如果最后的的css不生效&#xff0c;就单独的放在一个style标签内 重点解释&#xff1a; :row-class-name"tableRowClassName" //这个是设置返回某行的类名 :stripe"false" …

centos 查看版本

From: http://www.cnblogs.com/hitwtx/archive/2012/02/13/2349742.html 有以下命令可以查看&#xff1a; # lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description: CentOS release …

SQL Server replication requires the actual server name to make a connection to the server.错误解决...

今天&#xff0c;在作数据发库时&#xff0c;出现如下错误&#xff1a; "SQL Server replication requires the actual server name to make a connection to the server. Connections through a server alias, IP address, or any other alternate name are not supporte…

el-table使用fixed后,最后一行显示不全;el-table设置fixed后,最后一行被遮挡。

解决代码&#xff1a; .el-table {/deep/ .el-table__body-wrapper {overflow-x: scroll !important;//直接设置横轴内容滚动条 即可撑高高度 还不影响使用} }一、情景&#xff1a;给element的el-table设置fixed固定后&#xff0c;最后一行显示部分被遮挡。有的说是有时出现这…

OpenWrt

Contents 1 The Router 1.1 Getting started  1.1.1 Installation  1.1.2 Initial configuration  1.1.3 Failsafe mode 1.2 Configuring OpenWrt  1.2.1 Network  1.2.2 Wireless 1.3 Advanced configuration  1.3.1 Hotplug  1.3.2 Init scripts  1.3.3 …

bash shell函数中返回任意值的四种方法

From: http://www.jbxue.com/article/11322.html 本文介绍下&#xff0c;在bash shell编程中&#xff0c;从函数中返回任意值的几种方法&#xff0c;有需要的朋友参考下。在bash中&#xff0c;函数更像一个子程序&#xff0c;即其返回值&#xff0c;只能是一个数字&#xff0c…

Linux:ps命令以及进程状态详解

Linux 查看进程PS命令详细介绍 1.ps简介 ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地. 2. ps命令及其…

修改el-table滚动条样式

.el-table {// 滚动条的宽度/deep/ .el-table__body-wrapper::-webkit-scrollbar {width: 10px; // 横向滚动条height: 10px; // 纵向滚动条 必写}// 滚动条的滑块/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {background-color: #1fff;//颜色border-radius: 5px…

NQueens, NQueens2 N皇后问题,递归回溯

N皇后的规则&#xff1a;任意两个皇后不在同一行&#xff0c;不在同一列&#xff0c;不在同一斜线上。 算法分析&#xff1a;这种问题就用回溯法。深度搜索然后回溯。用一个数组记录每一行皇后的位置&#xff0c;下标代表行&#xff0c;值代表列。对行深度搜索。 public class …

Mac OS 如何更改文件的默认打开方式

From: http://www.ipc.me/os-x-xiao-ji-qiao.html 和使用 Windows PC 一样&#xff0c;人们在 Mac 电脑中往往也需要用多种应用开启同一种文件。并且&#xff0c;由于环境、习惯以及个人喜好不同&#xff0c;用户常常会希望更改某种文件的默认打开方式…… 在 OS X 系统下&a…

VMware “Transport(VMDB)error -44:Message”

这种情况说明虚拟机的一个服务没有开启&#xff0c;在本机中找到服务&#xff1a; 1. “打开运行”-“services.msc”回车。 2. 找到VMware Authorization Service这个服务&#xff0c;启动起来就OK了。

linux-shell面试题 之二

标签&#xff1a;面试题 shell 正则表达式 开发 sed 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://president.blog.51cto.com/4990508/854249由于工作的关系&#xff0c;收集了很多的s…

python基础学习1-列表使用

python 列表相关操作方法namelist [a,b,c,d,1,2,3,4]namelist1 [a,b,c,d,1,2,3,4]print(namelist)print(namelist[1])#取得第2个print(namelist[-1])#取得最后一个 索引从最后开始 -1,-2,-3print(namelist[0:3]) #取得列表范围 0到2 3个值 不包含 3序列上的值print(namelis…

mac下卸载jdk1.7

From: http://blog.sina.com.cn/s/blog_6940cab30102vbtp.html 目前mac上有一些软件还不支持jdk1.7,只能卸载1.7,恢复到1.6,下面二个链接是官网给出的卸载方法: http://www.java.com/zh_CN/download/help/mac_uninstall_java.xml http://docs.oracle.com/javase/7/docs/webnot…