Struts2学习笔记(3)之国际化

本文详细介绍了Struts2框架中的国际化配置方法,包括准备资源文件、配置全局资源文件、访问国际化信息以及输出带有占位符的国际化信息。同时阐述了包范围资源文件、Action范围资源文件和自动切换机制,并解析了Struts2调用Action的源码分析及自定义类型转换器的实现。

国际化

配置国际化全局资源文件

1.        准备资源文件,资源文件命名格式:例如

中国大陆:baseName_zh_CN.properties

美国:baseName_en_US.properties

在资源文件中以键-值的形式表现出来。

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

<constant name=” struts.custom.i18n.resources” value=”baseName”>

3.        在页面或action中访问国际化信息:

1)        在jsp页面中使用<s:text name=”key”/> key为配置文件中的键。

2)        在action类中,可以使用ActionSupport,使用getText(key)方法得到国际化信息。Key为配置文件中的键。

4.        输出带有占位符的国际化信息

1)        资源文件:{0},欢迎来到传智播客,{1}

2)        在jsp中输出带有占位符的国际化信息

<s:text name=”baseName”>

         <s:param><s:propertyvalue=”param”/></s:param>

         <s:param>hello</s:param>

</s:text>

3)        在Action中添加占位符信息

this.getText("baseName” , new String[]{“hello”,”你好”});

 

包范围资源文件

1.        在对应的包中创建资源文件

2.        资源文件的名字必须是:package_language_country.properties资源文件。必须以package开头。

3.        处于该包下的Action查找指定的key的消息时:

1)        从package资源查找。

2)        当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件中寻找。即全局资源文件中找

Action范围资源文件

1.        同包范围资源文件。

2.        资源名:以具体的ActionClassName开头。

3.        查找顺序:从小到大。即action->package->basename

自动切换

例如切换到英文:只需在超链接的URL后+request_locale=en_US,这样就可使请求的Action下的视图切换为对应的语言。

Struts2调用Action的源码分析(拦截器)


1.        请求被web.xml中拦截器,拦截,执行对应拦截器中的doFilter()方法。

2.        在doFilter中执行了executeAction(),并在其中调用Dispatcher对象的serviceAction()

3.        Dispatcher创建了一个ActionProxy(动态代理的)对象proxy。调用proxy的execute()方法。

4.        在ActionProxy方法中,获得ActionInvocation对象,这个对象封装了这个action父包中的所有拦截器以及自己的action。

5.        通过ActionInvocation对象invocation。执行invocation.invoke(),从父包中依次执行intercept(拦截器)。【具体过程见上图】。

6.        当所有的拦截器执行结束后,才执行action。

7.        默认调用action#execute()方法。


自定义类型转换器

1.        定义类型转换器的类

1)        继承DefaultTypeConverter类。

2)        重写converValue方法。

2.        注册类型转换器:

1)        注册为局部类型转换器

a)        在Action类所在的包内放置”ActionClassName”-conversion.properties文件。其中ActionClassName是Action的类名称。

b)        填写配置信息:属性名=类型转换器类的全路径名称

其中属性是Action类中需要转换的属性名称

2)        注册为全局类型转换器

a)        在根目录中放置xwork-conversion.properties文件。

b)        填写配置信息:带转换类型=类型转换器类的全路径名称。不能是属性必须是类型。

例如:java.util.Data=cn.itcase.conversion.DateConerter

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值