首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring:message,how to get all message with key 'beginning‘

spring:message,how to get all message with key 'beginning‘
EN

Stack Overflow用户
提问于 2012-08-15 17:12:43
回答 2查看 3.4K关注 0票数 4

因此,我的消息文件中有一堆消息,它们的关键字如下

代码语言:javascript
复制
alt.text1=Hello
alt.text2=Goodbye

在我的JSP中,我可以通过以下命令很好地获取和显示这些内容

代码语言:javascript
复制
<spring:message code="alt.text1"/>
<spring:message code="alt.text2"/>

,它将呈现为

代码语言:javascript
复制
Hello Goodbye

问题是,我如何获取关键字以'alt‘开头的所有消息。即我想一次显示所有的' alt‘消息,但不显示文件中不以alt开头的任何其他消息。

我知道消息是JSP中的一个hashmap,例如,我如何访问这个映射来迭代它的键和值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 02:41:15

我最终创建了一个CustomerMessageSource,如下所示,并将listAllAltLabels的结果放到视图上。然后这是一个简单的迭代的例子。

代码语言:javascript
复制
public class CustomMessageSource extends ReloadableResourceBundleMessageSource {

    public Map<String, String> listAllAltLabels(String basename, Locale locale) {
        Map<String, String> altLabels = new HashMap<String, String>();

        PropertiesHolder propertiesHolder = getMergedProperties(locale);
        Properties properties = propertiesHolder.getProperties();

        for(Object key : properties.keySet()){
            if(((String)key).startsWith("alt.")) {
                altLabels.put((String)key, (String)properties.get(key));
            }
        }

        return altLabels;
    } 

}

我使用的是spring webflow (隐藏了大多数控制器),但基本上是在呈现页面之前,在控制器/操作中的某个地方,调用listAllAltLabels并将结果赋给"altLabelMessages“,然后将其放入模型/视图中。

然后在视图中(jsp)

代码语言:javascript
复制
<c:forEach items="${altLabelMessages}" var="message">
    <form:option value="${message.key}" label="${message.value}"/>
</c:forEach>
票数 4
EN

Stack Overflow用户

发布于 2012-09-23 21:57:53

我不知道Spring,但看起来没有使用Spring获取消息包的tag

如果您使用<fmt:setBundle/>,您将获得一个LocalizationContext对象,其中包含一个ResourceBundle。不幸的是,无法使用表达式语言访问keySet方法。

您可以做的是在bean中加载消息包,并创建一个以alt.开头的密钥列表,或者公开整个密钥集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11966718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档