我在Play应用中制作一个页面,介绍如何制作Play应用页面。 (Very meta:P)如何在模板中转义模板语法
我找不到Play Framework文档中的任何内容,说明如何在模板中逃避Play的模板语法。有谁知道如何做到这一点?
我在Play应用中制作一个页面,介绍如何制作Play应用页面。 (Very meta:P)如何在模板中转义模板语法
我找不到Play Framework文档中的任何内容,说明如何在模板中逃避Play的模板语法。有谁知道如何做到这一点?
假设您想要将${name}
显示为HTML文本,并且不允许播放为变量名称提供值,那么在模板中播放编译$ {“$”}时可以找到问题的答案。
游戏产生一个错误,指出:
illegal string body character after dollar sign; solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}"
这实际上意味着,如果你想显示${name}
你应该写下面
${"\${name}"}
试试这个,它的工作原理!
是的,那是比我自己发布的更正确的答案。谢谢! – 2012-05-24 23:33:01
也许不是最优雅的解决方案,但如果您将任何标签中的$替换为ascii转义等价物,那么它就可以工作,例如,如果我想在屏幕上打印$ {user.name},那么文本我将进入将是:
${user.name}
显然同样适用于该模板语言使用作为触发,如#,@和%
是的,那是有效的。这是一个耻辱,这是必要的,但你是对的 - 这似乎是唯一的解决方案。谢谢! – 2012-02-12 01:46:25
想出了一个有趣的解决方案的任何其它特殊字符:
${"#{a @Controller.action()}${user.name}#{/a}"}
播放会自动将字符串的内容转义为HTML实体。这最终需要更少的额外代码,作为奖励,这意味着我可以将&粘贴模板代码原样复制到页面中。
我希望这对某人有帮助。 :)
您是否使用Groovy模板或Scala模板?你使用的是Java还是Scala? – Jonas 2012-02-09 23:38:13
如果您使用的是groovy,那么#{verbatim}标签会将其中的所有内容都转义出来 – 2012-02-09 23:57:55
我正在使用Groovy模板,但#{verbatim}不会转义模板标签/表达式。 – 2012-02-10 04:17:44