Можно ли написать собственный тег JSP, чтобы взять ключ сообщения i18n и вывести фразу перевода для данного запроса?
Обычно в JSP / JSTL я делаю:
<fmt:message key="${messageKey}"><fmt:param>arg1</fmt:param></fmt:message>
И я получаю перевод фразы. Теперь мне нужно сделать следующее (есть веская причина для этого):
<custom:translate key="${messageKey}" arg="arg1"/>
Но я не знаю, как посмотреть перевод в коде пользовательского тега. Базовый класс TagSupport предоставляет pageContext, из которого я могу получить ServletRequest, который имеет Locale ... но как мне тогда найти перевод ключа?
Я использую Spring 3.0, и в моем application-context.xml я определил ReloadableBundleMessageSource, чтобы я мог вызвать:
messageSource.getMessage(
key, new Object[] {arg}, pageContext.getRequest().getLocale()
);
но я не думаю, что могу вставить messageSource в пользовательский тег, могу я? В противном случае я могу создать новый экземпляр, но будет ли он загружать мои десятки тысяч переводов для каждого вызова? Я не хочу прибегать к превращению messageSource в статический член статического класса.