我有一个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技术知识不让我失望,那么我希望有人可以帮助我更好地理解!
我该怎么办?