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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 30 ноября 2017

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

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 голосов
/ 02 ноября 2011

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

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

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

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

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

...