Доступ к карте FreeMarker, где ключ находится в переменной - PullRequest
1 голос
/ 08 июля 2019

У меня есть переменная Apache FreeMarker "map", и мне нужен доступ к элементу на карте. Проблема в том, что «ключ» элемента, который я ищу, хранится в самой переменной. Рассмотрим следующую карту:

<#assign mymap = {"key1" : "value1", "key2" : "value2"}>

Теперь я могу легко получить доступ к карте, например:

${mymap.key1}

И это отлично работает. Моя проблема в том, что «ключ1» содержится в такой переменной:

<#assign keyname = "key1">
<-- Now I want to access the map via whatever key is in the variable keyname -->
${mymap.${keyname}}

К сожалению, приведенный выше синтаксис недопустим. Я думаю, что FreeMarker не достаточно умен, чтобы выполнять вложенные интерполяции. Итак, как мне это сделать? Беглый анализ документации на самом деле не говорит об этом сценарии. Похоже, это было бы довольно распространенным явлением.

1 Ответ

1 голос
/ 09 июля 2019

Использовать альтернативный синтаксис для хэша

 mymap[keyname]

Существует альтернативный синтаксис, если мы хотим указать имя переменной с помощью выражения: book ["title"].В квадратных скобках вы можете указать любое выражение, если оно вычисляется в виде строки.Так что с этой моделью данных вы также можете прочитать заголовок с книгой [test].Больше примеров;все они эквивалентны: book.author.name, book ["author"]. name, book.author ["name"], book ["author"] ["name"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...