Struts2国际化实战
2017-08-21 13:27
267 查看
网上的教程还挺多,但是我还是尝试了很久才成功。
其实挺简单的Struts2提供了较好的支持。如果只是照着网上的教程做,你很可能会发现各种无效或者null异常或者其他异常什么的。
这里面一个原因是我对Struts确实不熟悉,虽然也用过,但是那只是用过,根本没有深度。
一个简单的Struts2国际化小功能给了我一个教训:首先你至少得知道大体原理,当然能够深入理解是最好的,一点都不理解其运作原理及流程,那么照着网上的教程做就会遇到很多障碍,原因各异,而你也不知道为什么不行,你只能换一个教程,做更多的尝试直到可行。当然这和网上教程的质量也有关系。我自己总结了几点:1、不讲原理的教程不是好教程。2、原理讲的很细但缺少简洁形象的过程概括的教程不是好教程。3、讲了很多原理却没有实践的教程不是好教程。4、实践中没有讲明自己的必要运行环境的教程不是好教程。
下面我就说一下我最后怎么成功的吧,并不是教程。
,所以使用Struts2实现国际化要做的事情并不复杂。
2、 在struts.xml中配置:login.jsp为当前页面。(在struts标签的package标签内添加)
3、 在struts.xml同级目录下创建ApplicationResources_zh_CN.properties
和ApplicationResources_en_US.properties和ApplicationResources.properties(默认)文件(命名规则为:文件名语言国家.properties)。
4、相应在struts.xml中的struts标签下添加:(此处对应的是默认的语言和资源文件)
5、当前页面中如login.jsp中添加:
和
6、保存所有文件运行即可。
注意:如果资源是图片等,则只需要定义为其相对路径即可,如:
pictureLogin=images/login_zh_CN.gif与pictureLogin=images/login_en_US.gif
引用时则为
其实挺简单的Struts2提供了较好的支持。如果只是照着网上的教程做,你很可能会发现各种无效或者null异常或者其他异常什么的。
这里面一个原因是我对Struts确实不熟悉,虽然也用过,但是那只是用过,根本没有深度。
一个简单的Struts2国际化小功能给了我一个教训:首先你至少得知道大体原理,当然能够深入理解是最好的,一点都不理解其运作原理及流程,那么照着网上的教程做就会遇到很多障碍,原因各异,而你也不知道为什么不行,你只能换一个教程,做更多的尝试直到可行。当然这和网上教程的质量也有关系。我自己总结了几点:1、不讲原理的教程不是好教程。2、原理讲的很细但缺少简洁形象的过程概括的教程不是好教程。3、讲了很多原理却没有实践的教程不是好教程。4、实践中没有讲明自己的必要运行环境的教程不是好教程。
下面我就说一下我最后怎么成功的吧,并不是教程。
Struts2国际化简单原理(这里不是其内部实现原理,而是其相关类过程):
Struts2的国际化由Locale类的getLocale()和setLocale()方法来完成动作的,中间应该会通过一些ActionContext或者SessionContext之类的来做,此处略过,涉及到LocaleProvider的一个接口,但是实际上ActionSupport类已经把这些都做进去集成好了,只需要你的Action类集继承了ActionSupport类然后在action请求时含有request_locale参数即可如:,所以使用Struts2实现国际化要做的事情并不复杂。
环境:
struts2,基本的SSH框架,jdk应该不限版本,tomcat应该不限版本,本人使用Eclipse开发。实践:
1、创建一个Action类:import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import com.opensymphony.xwork2.ActionSupport; @Service("changeLocaleAction") @Scope("prototype") public class ChangeLocaleAction extends ActionSupport { private static final long serialVersionUID = 1L; public String changeLocale() { return SUCCESS; } }
2、 在struts.xml中配置:login.jsp为当前页面。(在struts标签的package标签内添加)
<action name="changeLocale" class="changeLocaleAction" method="changeLocale"> <result name="success">login.jsp</result> </action>
3、 在struts.xml同级目录下创建ApplicationResources_zh_CN.properties
和ApplicationResources_en_US.properties和ApplicationResources.properties(默认)文件(命名规则为:文件名语言国家.properties)。
4、相应在struts.xml中的struts标签下添加:(此处对应的是默认的语言和资源文件)
<constant name="struts.custom.i18n.resources" value="ApplicationResources"/> <constant name="struts.locale" value="zh_CN" /> <constant name="struts.i18n.encoding" value="UTF-8" />
5、当前页面中如login.jsp中添加:
<s:url action="changeLocale" var="lan_en"> <s:param name="request_locale" value="'en_US'"></s:param> </s:url> <a href="<s:property value="#lan_en"/>">English</a>
和
<s:url action="changeLocale" var="lan_cn"> <s:param name="request_locale" value="'zh_CN'"></s:param> </s:url> <a href="<s:property value="#lan_cn"/>">简体中文</a>
6、保存所有文件运行即可。
注意:如果资源是图片等,则只需要定义为其相对路径即可,如:
pictureLogin=images/login_zh_CN.gif与pictureLogin=images/login_en_US.gif
引用时则为
src="<s:text name='pictureLogin'/>"
相关文章推荐
- struts2进阶【4】——国际化
- struts2 I18n问题 国际化
- struts2的国际化
- struts2 国际化问题解决
- struts2的国际化
- struts2_国际化问题及原理
- struts2:国际化
- Struts2(十三):超链接实现动态加载国际化资源文件
- Struts2中文国际化乱码问题
- JS魔法堂:不完全国际化&本地化手册 之 实战篇
- 【SSH网上商城项目实战07】Struts2和Json的整合
- SSH实战OA 05:Struts2标签
- struts2配置包范围国际化资源文件--包范围
- struts2输出带有占位符的国际化信息
- struts2--国际化
- struts2国际化全例 错误解决
- Struts2开发-i18n国际化实现案例-登录页面
- Struts2项目实战 微云盘(二):项目结构
- java struts2国际化支持
- Struts2 的国际化