Основным вариантом использования #set
является присвоение значения переменной:
#set ($variable = 'value')
Вторичный вариант использования, который работает только в более поздних версиях Velocity, заключается в присвоении значений свойствам объекта, если для этих свойств существует установщик (т. е. объект является простым компонентом):
#set ($object.property = 'value')
## Same as:
$object.setProperty('value')
Благодаря некоторой магии Velocity это также работает для карт и индексированных списков:
#set ($map = {})
#set ($map.key = 'value')
$map
## Same as:
$map.put('key', 'value')
## ...except that it doesn't print the previous value stored in the map
#set ($array = ['original'])
#set ($array[0] = 'changed')
$array
## Same as:
$array.set(0, 'changed')
## ...except that it doesn't print the previous value stored in the array
Но он никогда не сможет присвоить значение другому значению. $infos.get("trackerData").get(0).get("info_suivi")
заканчивается геттером, поэтому он вернет значение. Присвоение значения другому значению невозможно почти во всех языках программирования.
Во-вторых, #set ($something = tracking.status)
недействителен независимо от того, что такое $something
. Если вы попытаетесь это сделать, это даст синтаксическую ошибку. В Velocity нет встроенной функции для чего-либо, кроме того, что обеспечивается очень немногими известными ключевыми словами: #foreach
для перебора переменных, #if
для проверки переменных, #set
для изменения переменных и несколько других, которые на самом деле не имеют отношения к переменным. Предполагается ли использовать файл свойств в качестве ресурса локализации? Затем вам нужно загрузить их либо в ResourceBundle
или объект Properties
, поместите этот объект в VelocityContext
, а затем использовать его, вызывая методы класса Java, используемые для получения значений на основе ключа. Это getString('key')
< /a> для объекта ResourceBundle
и просто get('key')
для объекта Properties
.
В-третьих, в файле свойств есть ключи с префиксом tracking.status
, а tracking.status
само по себе не является фактическим свойством. Как узнать реальный статус? Вы на самом деле пытаетесь получить сообщение за ключом, полученным путем добавления префикса значения за свойством info_suivi
с помощью tracking.status.
? Затем, предполагая, что файл свойств доступен через $messages
, это должно работать:
$messages.getString("tracking.status.${infos.get('trackerData').get(0).get('info_suivi')}")
Если вы хотите сохранить это в переменной вместо того, чтобы печатать ее напрямую:
#set ($infoSuivi = $messages.getString("tracking.status.${infos.get('trackerData').get(0).get('info_suivi')}"))
person
Sergiu Dumitriu
schedule
25.01.2014