Получить значение ключа, когда ключ объявлен в классе Java - PullRequest
0 голосов
/ 25 октября 2019

Я использую пружинный поток 2.5.0 вместе с тимелием 3.0.9.

У меня есть класс, содержащий несколько статических ключей, например:

public class MyKeys{
 .....
 public static final String myKey = "myKey1"
 .....  
}

Где-то в моем контроллере я хранюзначение для этого ключа, чтобы оно было доступно в файле шаблона.

(псевдокод):

context.add(MyKeys.mykey,"screen.home.welcome");

screen.home.welcome - это ключ сообщения i18n (хранится в приложении message.properties) значение которого я хочу представить пользователю.

Это работает , но Я хочу использовать ключ из класса MyKeys для доступа к его значению.

<div th:utext="#{${myKey1}}"></div>

То, что я пробовал, и не работает:

<div th:utext="#{${T(com.package.MyKeys).myKey}}"></div>

С этим я получаю в шаблоне myKey1,Как я могу дать тимелисту указание извлечь значение, связанное с myKey1?

1 Ответ

1 голос
/ 26 октября 2019

Такой уровень косвенности, который вы хотите, немного странный ... причина, по которой это не работает:

<div th:utext="#{${T(com.package.MyKeys).myKey}}"></div>
// Resolves to
<div th:utext="#{myKey1}"></div>
// Which isn't the actual message key since it's supposed to look like this:
<div th:utext="#{screen.home.welcome}"></div>

Я, вероятно, не рекомендовал бы его, но вы, вероятно, могли бы использовать для этого предварительную обработку. Что-то вроде этого, вероятно, будет работать для вас:

<div th:utext="#{${__${T(com.package.MyKeys).myKey}__}}"></div>
// Resolves to
<div th:utext="#{${myKey1}}"></div>
// Resolves to
<div th:utext="#{screen.home.welcome}"></div>

Это, вероятно, также будет работать:

<div th:utext="#{${#root.get(T(com.package.MyKeys).myKey)}}"></div>
...