Как мне прочитать пакет в контексте из пользовательского тега JSP? - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть файл 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 не подвело меня, поэтому я надеюсь, что кто-нибудь может помочь мне лучше понять!

Что мне делать?

1 Ответ

2 голосов
/ 06 декабря 2011

В соответствии со спецификацией JSTL существует класс с именем LocaleSupport , который реализует поиск в пакете и может использоваться любой реализацией обработчика тегов, которая должна создавать локализованные сообщения.

...