如何从JSP自定义标记中读取上下文中的包?

时间:2011-12-06 16:55:52

标签: java jsp internationalization tags resourcebundle

我有一个JSP 2.0文件,其中包含对自定义标记的调用,该标记需要知道页面上当前正在使用的包,因此它可以查找一些资源。自定义标记是用Java编写的。捆绑包可以根据自定义标记使用的页面进行更改,但资源键始终相同,因此我希望使用现有的fmt:bundle标记来指定它,例如:

<fmt:bundle basename="myBundle">
    <custom:tag title="text.title"/>
</fmt:bundle>

我一直在假设fmt:bundle标记可以从内部标记中读取(或以其他方式提供其环境),其中自定义标记位于上面的示例中(与它与之交互的方式相同) fmt:message标记,但我无法弄清楚如何访问LocalizationContext fmt:bundle所定义的LocalizationContext lc = (LocalizationContext)Config.get( pageContext.getRequest(),Config.FMT_LOCALIZATION_CONTEXT); ResourceBundle rb = lc.getResourceBundle(); String s =rb.getKey(title); 定义自定义标记的Java。

我试过

java.util.MissingResourceException: Can't find resource for bundle
    java.util.PropertyResourceBundle, key text.title

但我得到了

{{1}}

这似乎表明这不是正确的地方(我猜这已经落到了默认的捆绑?)。

一种解决方法可能是将捆绑名称传递给自定义标记,但我确定我想要实现的目标应该是可能的,如果只有我糟糕的JSP技术知识不让我失望,那么我希望有人可以帮助我更好地理解!

我该怎么办?

1 个答案:

答案 0 :(得分:2)

根据JSTL规范,有一个名为LocaleSupport的类,它实现了bundle查找,可以被需要生成本地化消息的任何标记处理程序实现使用。