#spring #spring-mvc #properties #annotations #messages
#весна #spring-mvc #свойства #аннотации #Сообщение
Вопрос:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="messages" />
компонент и, очевидно, в моих файлах velocity я могу использовать #springMessage() для получения необходимого сообщения. Но что, если я хочу получить это сообщение в моем контроллере *.java? Есть ли какая-нибудь аннотация, которую я мог бы использовать подобным образом?
@Annotation('message')
private String message;
Или мне нужно сделать это по-другому?
Спасибо
Комментарии:
1. Обязательно ли это быть интернационализированным, или у вас есть только один
messages.properties
файл?2. На данный момент я получил только один файл messages.properties
Ответ №1:
Пока вам не нужна никакая интернационализация, вы можете использовать messages.properties
файл с PropertyPlaceHolderConfigurer
(см. документы) вместе с @Value
аннотацией
В XML:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:messages.properties"/>
</bean>
И в Java:
@Value('message')
private String message;
Вам также понадобится <context:annotation-config/>
, чтобы заставить это работать (см. документы)
Комментарии:
1. хорошо, это хорошее решение, но что, если мой файл messages.properties будет расти и расширяться? Как это работает? Хранится ли где-нибудь содержимое моего файла (и я думаю, что тогда это не будет хорошим решением) или в компоненте PropertyPlaceholderConfigurer я просто показываю, где искать текущие сообщения?
2. @Dawid: Какая разница, если оно растет? Аннотация ссылается только на одну запись в файле.