2012-02-09 3 views
3

Я делаю страницу в своем приложении Play, в которой говорится о том, как создавать страницы приложения Play. (Very meta: P)Как избежать шаблона синтаксиса в шаблонах

Я не нашел ничего в документации по Play Framework, которая объясняет, как избежать синтаксиса шаблона игры в шаблоне. Кто-нибудь знает как это сделать?

+0

Вы используете шаблоны Groovy или шаблоны Scala? Вы используете Java или Scala? – Jonas

+0

Если вы используете groovy, то # {verbatim} tag escape все внутри него –

+0

Я использую шаблоны Groovy, но # {verbatim} не избегает шаблонных тегов/выражений. –

ответ

6

Предположим, вы хотите отобразить ${name} в виде HTML-текста и не дать воспроизвести рендеринг значения для имени переменной, тогда ответ на вопрос можно найти, если разрешить воспроизведение компиляции $ {"$"} в шаблоне.

Play выдает ошибку о том:

illegal string body character after dollar sign; solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" 

Это фактически означает, что если вы хотите отобразить ${name} вы должны написать следующее

${"\${name}"} 

Попробуйте, это работает!

+0

Да, это более правильный ответ, чем тот, который я отправил сам. Благодаря! –

4

Возможно, это не самое элегантное решение, но если вы замените $ в любом из ваших тегов на эквивалентный ascii эквивалент, то он будет работать, например, если я хочу напечатать $ {user.name} на экране, тогда текст Я хотел бы ввести бы:

${user.name} 

Очевидно то же самое для любых других специальных символов, язык шаблонный использует в качестве триггера, например, #, @ и%

+0

Да, это работает. Жаль, что это необходимо, но вы правы - это единственное решение. Благодаря! –

1

придумали интересное решение для этого:

${"#{a @Controller.action()}${user.name}#{/a}"} 

Воспроизведение автоматически сдерживает содержимое строки для объектов HTML. Это в конечном счете требует меньшего количества дополнительного кода, и в качестве бонуса это означает, что я могу скопировать код шаблона патча & как есть на странице.

Надеюсь, это кому-то поможет. :)

Смежные вопросы