Сбежать строка JavaScript в представлении Play 2.0? - PullRequest
11 голосов
/ 16 марта 2012

Есть ли простой способ избежать строки, которая будет использоваться в качестве строки JavaScript в представлении в Play 2.0? Например, вот простое представление, которое создает ссылку с полем подтверждения в onclick:

@(text:String,link:Call,message:String)
<a href="@link" onclick="return confirm('@message');">@text</a>

Это не удастся, если в сообщении есть новые строки или одинарные кавычки. Какой лучший способ сделать это?

1 Ответ

13 голосов
/ 17 марта 2012

Вы можете использовать Apache Commons Lang:

@(text:String, link:Call, message:String)

@import org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript
<a href="@link" onclick="return confirm('@escapeEcmaScript(message)');">@text</a>

Вы можете избежать явного импорта в шаблон, добавив его в файл project/Build.scala:

templatesImport += "org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript"
...