Grails: разница между \${} и ${}

Может ли кто-нибудь сказать мне разницу между:

<g:if test="${foo.bar}">

а также

<g:if test="\${foo.bar}">

Реальный пример использования «\» перед «$»:

<g:if test="\${flash.message}">

Спасибо.


person Guillaume M    schedule 05.04.2013    source источник


Ответы (2)


\${...} поместит буквальную фигурную скобку в вывод, а не вычислит содержимое как выражение. Мне редко приходится использовать это в обычном GSP, но это очень часто встречается в шаблонах скаффолдинга, где механизм шаблонов использует тот же синтаксис ${} для своих собственных выражений времени генерации, что и сгенерированный GSP во время выполнения, поэтому вам нужно \${} в шаблоне скаффолдинга. для создания выражений в GSP, которые затем будут реально оцениваться во время выполнения при отображении страницы.

person Ian Roberts    schedule 05.04.2013
comment
Спасибо ! Во время поиска я нашел это во втором издании «Начало работы с Grails» Скотта Дэвиса и Джейсона Рудольфа: В ‹g:if test=\${session?.user?.admin}› обратная косая черта перед знаком доллара говорит Grails для выполнения этого кода во время выполнения. В других местах вы увидите такой код, как var=${имя свойства}. В этом случае свойство propertyName будет разрешено при создании шаблона. - person Guillaume M; 05.04.2013
comment
@GuillaumeM да, это определенно говорит о шаблонах строительных лесов, а не о обычных GSP. - person Ian Roberts; 05.04.2013

Этот http://grails.1312388.n4.nabble.com/How-do-you-avoid-interpolation-of-an-html-attribute-in-GSP-to-print-a-literal-with-td1353164.html помог мне избежать интерполяции знака доллара. \$ у меня не работает.

person gis_wild    schedule 02.04.2014