Struts2中使用国际化

Struts2框架之Struts的国际化 1、软件国际化 所谓的软件国际化,就是在软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。 2、国际化的使用场景 以苹果官网为例, 苹果英文网:https://www.apple.com/ 苹果中文网:https://www.apple.com/cn 苹果日本网https://www.apple.com/jp 三个网... 阅读详情

struts2对语言包的支持可以分为3类

1.action级(给某个action用);

2.包级(给包中的所有action用);

3.全局(给整个工程用);

4.优先级;

action级

1.命名:action名+国际化后缀(actionName_zh_CN);

2.位置:放在action类所在的包中;

包级

1.命名:package+国际化后缀(package_zh_CN);

2.位置:对那个包起作用就放在哪个包中;

全局级

1.命名:前缀自己命名+国际化后缀

2.位置:classpath根(src根);

3.需要在struts.xml中配置:<constant name="struts.custom.i18n.resources" value="i18n"></constant>//value值是自己命名的前缀;

4.优先级问题:

action级----》当前action对应资源-----》当前action类实现接口对应的资源-----》当前action类父类对应的资源------》包级----》当前包对应资源-----》当前父包对应的资源-----》全局级-------》系统默认的语言包


5.国际化消息传参

(1)使用ognl表达式;Struts通用

(2)占位符;{0},{1},最多使用10个;优势:不需要知道ognl中的属性名

(3)在配置文件中,调用getText()方法;


6.不同资源中访问国际化消息

1.jsp:<s:text>

2.资源文件中:${getText("key")};

3.action类中:getText();

7.表单获取国际化参数:

label和key属性指定;

<s:textfield name="name" label="%{getText('name1') }"></s:textfield><br>
  <s:textfield name="email" key="email"></s:textfield><br>

 <s:form action="" method="post">
  <s:textfield name="name" label="%{getText('name1') }"></s:textfield><br>
  <s:textfield name="email" key="email"></s:textfield><br>
  <s:submit value="sumbit"></s:submit><br>
  </s:form>
8.如何切换国际化

原理:运行一个应用程序,首先会从请求request中找一个名字为:request_locale的一个参数,如果有,应用该locale的值,并且将该值存放在session中一个名字为WW_TRANS_I18N_LOCALE的键中;若果没有:会到session中读取名字为WW_TRANS_I18N_LOCALE的值,如果session中有,就应用该值,如果session中没有读取actionContext中locale的值。

 <a href="testI18nAction?request_locale=zh_CN">中文</a><a href="testI18nAction?request_locale=en_US">English</a>

实现代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'success.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
 
  <body>
  <a href="testI18nAction?request_locale=zh_CN">中文</a><a href="testI18nAction?request_locale=en_US">English</a><br>
 <s:text name="name1"></s:text>
  <hr>
  <s:form action="" method="post">
  <s:textfield name="name" label="%{getText('name1') }"></s:textfield><br>
  <s:textfield name="email" key="email"></s:textfield><br>
  <s:submit value="sumbit"></s:submit><br>
  </s:form>
  <hr>
  <s:text name="name2"></s:text><br>
  <s:text name="name3">
  <s:param value="%{'lisi'}"></s:param>
  </s:text><br>
  <s:text name="email"></s:text><br>
  <s:text name="email1"></s:text>
  <hr>
    <s:text name="name"></s:text><br>
  <s:text name="name1"></s:text><br>
  <s:text name="email0"></s:text><br>
  <s:debug></s:debug>
  </body>
</html>
Actin中代码:

package com.handler;

import com.opensymphony.xwork2.ActionSupport;

public class TestI18nAction extends ActionSupport{
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String testI18n(){
		this.name="wangwu";
		String email_error=getText("email1");
		String name2=getText("name2");
		String name3=getText("name3", new String[]{"zhangsan"});
		System.out.println(email_error);
		System.out.println(name2);
		System.out.println(name3);
		
		return SUCCESS;
	}
}





文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词) 4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。 阅读详情

相关推荐

Pixhawk+OpenMV实战:如何用Apriltag实现无人机自动降落(附避坑指南)

本文详细介绍了如何利用Pixhawk飞控和OpenMV摄像头,通过Apriltag视觉标签实现无人机的精准降落系统。从硬件搭建、参数配置到视觉处理代码优化,提供了完整的实战指南和避坑建议,帮助开发者快速实现厘米级精度的自动降落功能。

weixin_27076351的博客 481

Struts2中的I18N(国际化)处理

struts2的国际化 i18n 1.在struts.xml配置文件中使用资源文件  2.在src目录下建立资源文件,文件名与中value的值相同  messsage.properties默认语言环境下使用的资源文件  messsage_en_US.properties en:语言 US:国家(可省略),特定的环境下使用的资源文件  messsage_zh_CN.pr

博观而约取 厚积而薄发 528

SAP移动类型

SAP移动类型移动类型定义 移动类型定义

qq_20593197的博客 6205

关于Struts2的国际化

Struts2中的国际化分为三个级别:全局的、包级别的、类级别的。国际化的内容主要是页面上表单元素的国际化,出错提示信息的国际化。有了国际化的内容之后,只需要编写一套逻辑代码,就可以有多种不同的语言展现,如中文界面、英文界面等等,在各语言之间切换时不需要修改代码,只要修改一下本地浏览器的设置就可以了。 无论是全局的、包级别的,还是类级别的,它们的属性文件中的配置方式都一样,只是文件名和放置的位置...

风萧萧兮易水寒,壮士一去兮不复还 374

致远OA系统表单相关操作记录(一)

致远OA系统表单相关操作

weixin_59666050的博客 6102

比NTP还牛逼的时间同步协议:1588v2,亚微秒级!

1588v2,又称为Precision Time Protocol Version 2,即精密时间协议的第二版本,或称为PTPv2,是一种精密时间同步协议标准,旨在实现网络中设备之间的高精度时间同步。该协议由IEEE标准组织发布,并在网络测量和控制系统中得到广泛应用。1588v2的主要目的是在计算机网络中提供高度准确的时间同步。它可用于确保不同设备之间的时钟同步,从而协调它们的操作。这对于需要协同工作的系统、无线通信基站等具有关键性的应用非常重要。

网络技术联盟站 4281

Struts2的国际化

1.概述 把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 与国际化对应的是本地化, 指让一个具备国际化支持的应用程序支持某个特定的地区 Struts2国际化是建立在Java 国际化基础上的: –为不同国家/语言提供对应的消息资源文件 –Struts2框架会根据请求中包含的 Locale 加载对应的资源文件 –通过程序代码取得该...

weixin_30338743的博客 119

【推荐100个unity插件之34】在unity中实现和Live2D虚拟人物的交互——Cubism SDK for Unity

Live2D是一款2D建模的软件,常用于游戏,动态壁纸,虚拟主播,游戏公司里面是有专门的ive2D岗位的。游戏里面还有一个经常使用的软件——spine,他做的也是2d的模型,但是他更适合做一些动作,Live2D更适合人物交互方面。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4996

Struts(14)本地化/国际化(i18n)

国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过程被称为本地化。国际化的过程有时也被称为翻译或本地化启用。国际化是缩写i18n,因为我和两端用n字打头,并有18个字符之间的第i个和最后n。 Struts2提供本地化,即,国际化(i18n)支持,通过资源包,拦截器和标签库在以下地方: UI 标签 消息和错误

逸轩 972

RNA-seq分析:Step4(比对)

预处理之后的fastq文件,可以使用HISAT2软件将reads比对至参考基因组上。HISAT2软件将reads比对至参考基因组上的步骤如下:1. 对参考基因组进行建索引。对参考基因组进行预处理,生成索引文件,包括基因组序列的FM索引和SA索引。2. 将原始的reads进行预处理。包括去除接头序列、去除低质量的碱基,以及进行过滤,得到质量较高的、可靠的reads。3. 利用建立的FM索引和SA索引,将处理后的reads与参考基因组进行比对。首先,通过FM索引,快速找到与reads匹配的可能位置;

沉香best的博客 2599

任务混部最少服务器数量计算问题

这里的并行度指的是该任务运行时会占用的服务器数量。要注意的是,一个服务器在每个时刻可以被任意任务使用,但同一时刻最多只能被一个任务占用,并且任务运行结束后会立即释放服务器(结束时刻不占用)。最后,我们从字典中找出服务器数量的最大值,这个最大值就是完成这批任务混部最少需要的服务器数量。对于每个任务,我们会遍历其对应的时间区间,将该任务的并行度累加到对应时刻的服务器数量上。任务混部的目标是让这批任务由同一批服务器承载运行,你需要计算完成这批任务混部最少需要多少服务器,以此来最大化控制资源成本。

m0_62153576的博客 107

重温经典struts1之国际化(I18N)

struts1实现国际化(i18n)

dy051107的博客 1083

大厂面试:字节跳动大数据面试题及参考答案(10万字长文及多张原理图持续更新)

在 Spark 中,宽窄依赖是用来描述 RDD(弹性分布式数据集)之间的依赖关系的概念。窄依赖是指父 RDD 的每个分区最多被一个子 RDD 的分区使用,即子 RDD 的分区可以通过确定的规则从父 RDD 的分区计算得到,并且不需要跨节点进行数据传输。窄依赖通常可以在一个节点上进行计算,不需要进行数据的 shuffle 操作,因此性能较高。宽依赖是指父 RDD 的一个分区可能被多个子 RDD 的分区使用,即子 RDD 的分区需要通过跨节点的数据 shuffle 操作从父 RDD 的多个分区获取数据。

大模型大数据攻城狮的专栏 1651

struts2国际化

在Struts 2.0中国际化(i18n)您的应用程序 国际化是商业系统中不可或缺的一部分,所以无论您学习的是什么Web框架,它都是必须掌握的技能。 其实,Struts 1.x在此部分已经做得相当不错了。它极大地简化了我们程序员在做国际化时所需的工作,例如,如果您要输出一条国际化的信息,只需在代码包中加入FILE-NAME_xx_XX.properties(其中FILE-NAME为默认资源

qd_jz_gaoxiao 522

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

struts国际化java_Struts2 的国际化实现方式示例

以前一直看见 i18N ,现在才知道原来 i18N 就是 Internationalization,因为以 i 开头,以 N 结尾,共18个字母,也就是国际化的意思。在百度搜索主页上没有看见中英文的切换,毕竟百度在中国是为了中国人而设计的,没必要弄个英文的切换。google搜索主页上是有的,因为谷歌在中国的服务器放到了香港,所以还有繁体切换。这是怎么做到的呢?其实原理很简单,用Struts2很容易...

weixin_35698805的博客 202

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

struts2中的国际化

1.国际化          1、 国际化原理 ? 什么是国际化 ?     同一款软件 可以为不同用户,提供不同语言界面  ---- 国际化软件     需要一个语言资源包(很多properties文件,每个properties文件 针对一个国家或者语言 ,     通过java程序根据来访者国家语言,自动读取不同properties文件 )              2、 资源包编写     ...

漫漫学习成长之路 206

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

四 Struts2之国际化

四 Struts2之国际化

dtijcfrhb的博客 214

Struts2总结之第四章国际化

Struts2总结之第四章国际化 复习: 1.action处理请求参数 1.属性驱动 1.直接将action做为model 2.在action声明一个model.在页面上需要使用ognl来给组件起名. 2.模型驱动 让action实现ModelDriven接口,重写getModel()方法,实例化一个model对象, getModel方法返回的就是实例化的model对象。 2.struts2中类型...

SYJ_1835_LPM的博客 448

Struts2 国际化总结

   在src目录下的hellofile_en_US.properties 和 hellofile_zh_CN.properties是测试程序Test3.java用到的注:全局 资源文件message.properties放在src目录下,而且要在struts.xml中表明      包级别 资源文件建在相应的包下,取名:package_en_US.properties 或 package_z

tianlanskyblue的专栏 660

国际化之struts2实现研究

国际化之Struts2实现研究 一、基本原理 先不提Struts这一工具,也不用其他现成的工具,如何实现国际化? 最基本的实现就是,根据不同的Locale读取不同的文本。 例如有两个资源文件: 第一个:ApplicationResources_zh_CN.properties 第二个:ApplicationResources_en_US.properties 当Loc...

aduzz62084的博客 429

Struts2学习之国际化机制

什么叫国际化呢?自学时刚看到这个词的时候感觉好像很高端很难的样子,深入理解后才发现就那么一回事,不过其中的机制确实挺好的。        国际化主要是指语言的国际化,是不同地区和使用不同语言的用户都能方便地使用同一个应用系统。Struts2的国际化机制是建立在Java国际化 的基础之上,对Java国际化 进行了优化和封装。主要过程如下:        当客户端发送请求时,Struts2的i18n(

逆风奔跑。。不要去考虑什么天赋异禀,一切都来自经历和渴望。 1352

Struts2_08_Struts2国际化实例

1、建立properties文件在src目录下建立如下形式的三个文件   baseName_language_country.properties   baseName_language.properties   baseName.propertiesglobe_en_US.propertiesglobe_zh_CN.properties,其中\u7528这些是中文的Unicode编码globe....

weixin_41148979的博客 301
上一篇: 简单学习struts标签中使用ognl表达式
下一篇: java程序初始化的顺序
JYLM
博客等级 码龄10年 12粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值