Используйте одно сообщение в качестве аргумента в других сообщениях Spring (файл свойств)

#spring #resources #properties #message

#spring #Ресурсы #свойства #Сообщение

Вопрос:

Мне нужно сделать что-то вроде этого:

 bob.common=goat
bob.have=I have a {bob.common}!
bob.want=I want a {bob.common}!
bob.need=I need a {bob.common}!
 

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

Мы уже используем нумерованные аргументы в наших свойствах, но мы хотели бы иметь возможность передавать ссылку на другое свойство.

Ответ №1:

Я предлагаю сделать это :

 bob.common=goat 
bob.have=I have a {0}!
bob.want=I want a {0}!
bob.need=I need a {0}!
 

Затем на вашей странице :

 <spring:message code="bob.common" var="animal"/>
<spring:message code="bob.have" arguments="${animal}"/>
<spring:message code="bob.want" arguments="${animal}"/>
<spring:message code="bob.need" arguments="${animal}"/>
 

То, что вы хотите сделать, было бы слишком строгим, если вы хотите, например, изменить свое животное.

Ответ №2:

Согласно списку изменений Spring, это поддерживается с 2.5.3:

  • PropertyPlaceholderConfigurer также поддерживает вложенные ключи в ключах-заполнителях (например, «$ {db.$ {environment}}»)

Итак, для вашего примера вы должны иметь возможность использовать:

 bob.have=I have a ${bob.common}!
 

и PropertyPlaceholderConfigurer должен распознать «вложенный ключ» и правильно его разрешить.

Комментарии:

1. Интересно. Я попробую это завтра!

2. Черт возьми, это не работает для меня в реальном файле сообщений . Я думал, что это слишком хорошо, чтобы быть правдой. Я что-то упустил?