关于一个struts2国际化的处理问题。

问题描述

现在有一个需求是这样的, 在数据库里面有一个menu菜单表, 需要支持多种语言。 然后把菜单的名称配置到国际化资源文件中,数据库中只配置国际化文件的key.比如有如下几个字段:menuId menuName prentId URL status100 menu.user.Manager -1 XXXX.jsp Y101 menu.modify.user -100 XXXX.jsp Y102 menu.query.user -100 XXXX.jsp Y这个菜单表,中的menuName的值,用的是国际化属性ApplicationResouce_en_US.properties 文件的中key;在action中查询出来后, 放在一个list集合中,然后通过jsp页面的struts2的 <s:iterator value='#session.menuList' var='m'> <s:text name='<"s:property value='#m.menuName'">'/> <s:text name='${m.menuName}'/> </iterator>如果直接写成这样,<s:text name='menu.user.Manager'/> 就支持.这样显然不行。 因为struts标记不能嵌套使用,也不能支持EL表达式。甚至把整个<s:text name='menu.user.Manager'>都统一设置到数据库中. 试了很多种方法,都不行.我都已经绝望了.实在不行,就在Action循环通过ResourceBound.getBound("资源文件路径",Locale.ENGLISH);然后再设置到集合中, 这种方式,效率实在是比较低. 就没有用了..请大家帮我想想办法啊。 实在没有分了啊,.我只有3分. 还是系统送的.. 问题补充:myali88 写道

解决方案

引用在action中查询出来后, 放在一个list集合中,然后通过jsp页面的struts2的<s:iterator value='#session.menuList' var='m'> <s:text name='<"s:property value='#m.menuName'">'/> <s:text name='${m.menuName}'/> </iterator>如果直接写成这样,<s:text name='menu.user.Manager'/> 就支持. 没太明白作者的意思,上面那种方式无法获取i18n文件中的值吗?我觉得你这里唯一的问题就是要获取的国际化的key是动态的,除此,我不知道是否还有其他问题。我是这么做的:<s:iterator value='keys'> <s:text name='%{name}'/></s:iterator>其中“keys”保存的是你的Menu对象的数组,然后这样获取每个key对应的属性文件里的值。
解决方案二:
<s:iterator value='list' id='l'> <s:property value="l.menuName"> </iterator> 那就直接这样子
解决方案三:
引用如果定义一个自定义标签,好像不能不能嵌套。和自定义标签没有关系,jsp的<%=>是可以嵌套在struts标签里的,思想就是通过<%=>强行输出define定义变量里的对象。
解决方案四:
在action中查询出来后, 放在一个list集合中,然后通过jsp页面的struts2的 <s:iterator value='#session.menuList' var='m'> <s:text name='<"s:property value='#m.menuName'">'/> <s:text name='${m.menuName}'/> </iterator> 将menuId menuName prentId URL status 这些菜单封装成javaBean ;list中方这些javaBean就可以了,在出action前将这个list到栈顶,然后通过迭代标签,如你的List名字就叫list<s:iterator value='list' id='l'> <s:text name='<s:property value="l.menuName">'/> </iterator> 这样一定支持。注:要将list提供一个get方法
解决方案五:
struts2 没用过,struts1原来遇到和你差不多的问题,解决办法是用jsp的<%=>输出,看对你有没有帮助比如:<bean:define id="currentPage" name="ActionForm" property='pagination.currentPage' type='java.lang.Integer' /><xxx:pageController currentPage="<%= currentPage.intValue() %>" />xxx:pageController是自定义组件
解决方案六:
我觉得这里http://struts.apache.org/2.1.8.1/docs/text.html,最后面一段应该可以帮你。还可以看看这个:http://stackoverflow.com/questions/2009443/struts-2-text-tag-with-dynamic-expression-how

时间: 2024-08-17 14:06:41

关于一个struts2国际化的处理问题。的相关文章

第一个Struts2实例之hello world!

Struts官网:http://struts.apache.org/ Struts2框架预先实现了一些功能    1:请求数据自动封装    2:文件上传的功能    3:对国际化功能的简化    4:数据校验的功能 第一:首先需要说明的是Struts就是基于MVC模式的框架!(struts其实也是servlet封装,提高开发效率!) 第二:Struts开发步骤: 1. web项目,引入struts - jar包 2. web.xml中,引入struts的核心功能,配置过滤器 3. 开发acti

struts2-利用jquery的get方法,发送一个Struts2请求,报无法找到方法

问题描述 利用jquery的get方法,发送一个Struts2请求,报无法找到方法 js代码java代码错误信息严重: Servlet.service() for servlet [action] in context with path [/eimplat_pack] threw exception [java.lang.NoSuchMethodException: Action[/labelcp] does not contain specified method (check logs)]

struts2国际化问题··············

问题描述 struts2国际化问题·············· 在后台可以输出想要的结果succTip=u6B22u8FCE,{0}!u5F88u9AD8u5174u89C1u5230u4F60!替换后的,{0}也可以被替换为输入框中的username,但是到了页面上文字可以显示,{0}却无法替换,请教是为什么? 用的是全局的国际化资源 loginTitle=u767Bu9646u9875u9762 username=u7528u6237u540D password=u5BC6u7801 sub

struts2 国际化

问题描述 配置中文及英文版国际化资源文件,globalMessages.propertiesglobalMessages_zh_CN.propertiesglobalMessages_en_US.properties在中文及英文访问下正常.但我切换到这两语种以外(如:德语)的语种.页面显示的不是globalMessages.properties中的国际化,globalMessages.properties默认的是英文的.请问:struts2国际化不像struts1.x一样,在没找到对应的语文资料

请问一个struts2上传文件的问题

问题描述 我写了一个struts2上传文件的例子,出现了一个很奇怪的问题,提交表单以后,页面直接跳转到result="input"的页面,action里面的断点也没有执行,而且浏览器上的url显示的是fileupload.action,页面却已经跳转到了input返回页面:如果file控件里不加文件,就会执行action里面的断点 解决方案 解决方案二:上代码,jsp和Action解决方案三:TSysUpfileAction.javapackagems.platform.system.

struts2国际化

在struts2中需要做国际化的有: jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化 jsp页面的国际化 第一步 在src目录下新建tanggao_en_US.properties,内容为 username=username password=password tanggao_zh_CN.properties文件,内容为 username=\u7528\u6237\u540D password=\u5BC6\u7801 第二步 在struts.xml

struts2国际化全例 错误解决

在struts2中需要做国际化的有: jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化 在之前的例子中已经做过和国际化相关的例子了,在struts.xml中配置过   view plaincopy to clipboardprint? <constant name="struts.custom.i18n.resources" value="message"></constant>        其中

Struts2.x学习:第一个Struts2.0例子

具体相关页面及相应配置如下: 在struts1.x系列中,所有的请求是通过一个servlet(ActionServlet)来管理控制的,在Struts2.0而是经过一个Filter来处理请求的 web.xml : <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter- class&g

Struts2教程1:第一个Struts2程序

在本系列教程中我们将学习到Struts2的各种技术.在本教程中使用的工具和程序库的版本如下: 开发工具:MyEclipse6 Web服务器:Tomcat6 Struts版本:Struts2.0.11.1 JDK版本:JDK1.5.0_12 J2EE版本:Java EE5.0 在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下: http://localhost:8080/struts2/index.jsp 由于MyEclipse