2011-01-21 19 views
3

Я использую (обучение ...) Struts 1.3 для создания веб-приложения MVC. Для ясности я хотел бы включить более одного элемента <message-resources> - разделение сообщений на файлы для определенных модулей приложения.Как включить несколько ресурсов сообщений в Struts?

Официальные Apache documentation государства:

Вы можете определить один или несколько <message-resources> элементов для вашего веб-приложение; модули могут определять свои собственные пакеты ресурсов. В вашем приложении одновременно могут использоваться разные пакеты, атрибут «ключ» используется для указания желаемого пакета.

Однако, когда я включаю более чем один элемент, причина JSP в качестве исключения о том, что есть недостающее сообщение для ключа:

SEVERE: Servlet.service() for servlet jsp threw exception javax.servlet.jsp.JspException: Missing message for key "label.username" in bundle "(default bundle)" for locale en_GB 
at org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:233) 
at org.apache.jsp.index_jsp._jspx_meth_bean_005fmessage_005f0(index_jsp.java:197) 
at org.apache.jsp.index_jsp._jspService(index_jsp.java:107) ~~~snip~~~ 

Это XML:

<struts-config> 
    ~~~snip~~~ 
    <message-resources parameter="resources.DefaultResource"/> 
    <message-resources parameter="resources.Registration"/>  
</struts-config> 

Без второй ресурс «Регистрация», исключение не выбрасывается. «label.username» существует только в «DefaultResource».

Большое спасибо.

+0

@downvoter Что вы считаете неправильным в этом вопросе? – Mikaveli

ответ

9

С помощью этого struts-config второй элемент ресурсов сообщений использует тот же самый (по умолчанию) ключ, что и первый, и тем самым полностью заменяет первый. Вы должны назначить другой ключ к каждому из пучка, и использовать пучок atttribute в боб: тег сообщения, чтобы указать, какой пучок вы хотите использовать:

<struts-config> 
    ~~~snip~~~ 
    <message-resources parameter="resources.DefaultResource"/> 
    <message-resources parameter="resources.Registration" key="registrationBundle"/>  
</struts-config> 

и в JSPs:

Message from the default bundle : <bean:message key="my.first.key"/> 
Message from the registration bundle : <bean:message key="my.second.key" bundle="registrationBundle"/> 
2

Я считаю, что вам нужно предоставить ключевой атрибут. Ключ должен использоваться в теге jsp для отображения определенного сообщения из файла свойств ресурса. Посмотрите на это tutorial.

2

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

Различные пакеты могут быть использованы одновременно в вашем приложении, «ключ» атрибут используется для указания желаемого сверток.

http://struts.apache.org/1.3.10/struts-core/dtddoc/struts-config_1_3.dtd.html#message-resources

Включите атрибут ключа (с уникальными значениями) вместе с атрибутом параметра в распорок-конфигурации. без отдельного ключа, resources.Registration переписывает resources.DefaultResource
(Чтобы проверить это предположение, переключите упорядочение двух ресурсов сообщений в struts-config. Затем ваше имя label.us будет работать, но сообщения из другого пакета выиграли ' t)

Смежные вопросы