【发布时间】:2012-01-14 06:41:23
【问题描述】:
我有一个 JSP 2.0 文件,其中包含对自定义标记的调用,该标记需要知道页面上当前正在使用什么包,因此它可以查找一些资源。自定义标签是用 Java 编写的。捆绑包可以根据使用自定义标签的页面进行更改,但资源键将始终相同,因此我想使用现有的fmt:bundle 标签来指定它,例如:
<fmt:bundle basename="myBundle">
<custom:tag title="text.title"/>
</fmt:bundle>
我一直假设fmt:bundle 标签可以从内部标签读取(或以其他方式提供其环境),其中自定义标签在上面的示例中(与它与@交互的方式相同) 987654324@ 标签),但我无法弄清楚如何从定义自定义标签的 Java 中访问 fmt:bundle 应该定义的 LocalizationContext。
我试过了
LocalizationContext lc = (LocalizationContext)Config.get(
pageContext.getRequest(),Config.FMT_LOCALIZATION_CONTEXT);
ResourceBundle rb = lc.getResourceBundle();
String s =rb.getKey(title);
但我只是得到
java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key text.title
这似乎表明这不是正确的查看位置(我猜这已经落入了默认捆绑包?)。
一种解决方法可能是将包名称传递到自定义标记中,但我确信我想要实现的目标应该是可能的,只要我的 JSP 知识不让我失望,所以我希望有人可以帮助我更好地理解!
我该怎么办?
【问题讨论】:
标签: java jsp internationalization tags resourcebundle