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

    技术2025-08-06  21

    加入国际化配置:

    在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”的配置在对应的路径中加入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> 在src根目录下加入struts.properties运行时配置文件,并在其中加入国际化文件的前缀名配置: #定义Struts 2的资源文件的baseName是messageResource struts.custom.i18n.resources=messageResouce 多个文件时用“,”隔开如: struts.custom.i18n.resources=messageResouce,test,name 在src根目录下加入国际化支持文件,文件的命名规范为 basenam_语言代码_国家代码(大写).properties 比如: ....i18n....中设置的名字_en_US.properties(英语) ....i18n....中设置的名字_zh_CN.properties(中文)在配置文件中加入语言环境的语言,如: 在messageResouce_zh_CN.properties中加入:testkey=欢迎世界 对应的再另一个文件中加入testkey=Hello Word在页面中引用方法: <s:text name="testkey"/> <s:property value="%{getText('testkey')}"/> 运行项目就会得到其配置结果如果要改变访问语言环境可以点击浏览器的“工具——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}都可以得到,页面显示时即可得到相应的结果

     

     

     

     

    最新回复(0)