Groovy шаблон движка избегает скобки скобки в Java - PullRequest
0 голосов
/ 28 сентября 2018

Недавно мне пришлось использовать шаблонный движок Groovy для рендеринга некоторых строк, полученных из внешнего интерфейса.Некоторые строки выглядят как ${condition_set[0].name} И здесь проблема: обработчик шаблонов Groovy обрабатывает условие__ массив и '.'это как метод вызова нотации.Таким образом, он не может взять строку, например, condition_set [0] .name, и найти привязки в движке.В Groovy есть какой-нибудь способ избежать '[', ']' и '.'?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы получаете входные данные в формате, который не может быть проанализирован как простая переменная шаблона, тогда вы можете переключиться на GStringTemplateEngine, что позволяет вам использовать разделы простого кода Groovy, который может легко прочитатьключ карты как 'condition_set[0].name'.Взгляните на следующий пример:

import groovy.text.GStringTemplateEngine

def text = '''
This is <%= getVariable("condition_set[]") %>

This is <%= getVariable("condition_set[0].name") %>
'''.trim()

def binding = ['condition_set[]': 'test', 'condition_set[0].name': 'TEMPLATE']

def engine = new GStringTemplateEngine()

println engine.createTemplate(text).make(binding)

Самое важное изменение по сравнению с вашим предыдущим примером состоит в том, что вместо использования простых переменных шаблона теперь мы выполняем метод getVariable() для объекта Binding.Важно начинать раздел с <%=, чтобы результат вызова метода getVariable() возвращался синтаксическому анализатору шаблона.Если вы запустите этот пример, он выдаст следующий вывод:

This is test

This is TEMPLATE

Надеюсь, это поможет.

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