WEB Struts2 国际化构建,并实现显示动态信息

加入国际化配置:

  1. 在web.xml文件中加入:
    <filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>
    		 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    		</filter-class>
    		<init-param>
    			<param-name>config</param-name>
    			<param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

    配置struts.xml的路径,如果struts.xml文件在src根目录下的话,配置节点可省略,自动载入,如果在web-inf目录下就要在后面加入“../struts.xml”的配置
  2. 在对应的路径中加入struts.xml文件,并加入代码:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    	<package name="example" extends="struts-default">
    		<action name="HelloWord" class="web.HelloAction">
    			<result name="success">/hello.jsp</result>
    		</action>
    	</package>
    </struts>
  3. 在src根目录下加入struts.properties运行时配置文件,并在其中加入国际化文件的前缀名配置:
    #定义Struts 2的资源文件的baseName是messageResource
    struts.custom.i18n.resources=messageResouce
    多个文件时用“,”隔开如:
    struts.custom.i18n.resources=messageResouce,test,name
  4. 在src根目录下加入国际化支持文件,文件的命名规范为
    basenam_语言代码_国家代码(大写).properties
    比如:
    ....i18n....中设置的名字_en_US.properties(英语)
    ....i18n....中设置的名字_zh_CN.properties(中文)
  5. 在配置文件中加入语言环境的语言,如:
    在messageResouce_zh_CN.properties中加入:testkey=欢迎世界
    对应的再另一个文件中加入testkey=Hello Word
  6. 在页面中引用方法:
    <s:text name="testkey"/>
    <s:property value="%{getText('testkey')}"/>

    运行项目就会得到其配置结果
  7. 如果要改变访问语言环境可以点击浏览器的“工具——internet选项——常规下的语言按钮”可以添加语言环境或是更改首选语言,更改后刷新页面就变成对应的英语了

 

 很多时候在开发中会遇见与上下文相关的动态的提示信息,可以通过在国际化文件中加入动态配置实现,可以用Struts2中OGNL表达式实现,比如:

 

在action中

private String msg;
		public String testPro(){ 
		ServletActionContext.getRequest().setAttribute("name", "test Properties");
		msg = "test message";
		return SUCCESS;
	}
	
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}

在properties中可以写成
%{#request['name']}/%{#request['msg']} 或者是 %{#request.name}/%{#request.msg}都可以得到,页面显示时即可得到相应的结果

 

 

 

 

转载于:https://my.oschina.net/u/3647620/blog/1552360

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值