У меня есть файл JSP 2.0, содержащий обращения к пользовательскому тегу, который должен знать, какой пакет в настоящее время используется на странице, чтобы он мог искать некоторые ресурсы. Пользовательский тег написан на Java. Пакет может меняться в зависимости от того, на какой странице используется пользовательский тег, но ключ ресурса всегда будет одинаковым, поэтому я хотел использовать существующий тег fmt:bundle
, чтобы указать это, например ::
<fmt:bundle basename="myBundle">
<custom:tag title="text.title"/>
</fmt:bundle>
Я предполагал, что тег fmt:bundle
может быть прочитан (или иным образом предоставляет свою среду) внутренним тегам, где пользовательский тег находится в приведенном выше примере (так же, как он взаимодействует с fmt:message
), но я не смог выяснить, как получить доступ к LocalizationContext
, который fmt:bundle
предположительно определяет изнутри Java, который определяет пользовательский тег.
Я пробовал
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 не подвело меня, поэтому я надеюсь, что кто-нибудь может помочь мне лучше понять!
Что мне делать?