2012-03-16 8 views
11

Play 2.0のビューでJavaScript文字列として使用する文字列をエスケープする簡単な方法はありますか?Play 2.0ビューでJavaScript文字列をエスケープしますか?

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

改行やメッセージでの単一引用符がある場合に失敗します。たとえば、ここでのonclickでの確認ボックスでリンクを作成する単純なビューです。これを行う最善の方法は何ですか?

答えて

13

あなたは、Apache Commonsのラングを使用することができます。

@(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" 
+0

感謝。私はPlay 2.1を使用しています。デフォルトのライブラリは 'apache-commons-lang3'です。 'org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript'を' Build.scala'に追加し、 'escapeJavaScript'の代わりにテンプレートに' escapeEcmaScript'を使用しました –

+0

OK、私は自分の答えを編集しました。 –

+0

これを 'play'のhtmlと' @Html(message) 'をエスケープして組み合わせることはできますか? '@escapeEcmaScript(Html(message))'は動作しません。 – Dfr

関連する問題