我在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