2012-03-16 14 views
11

Oyun 2.0'da bir görünümde JavaScript dizesi olarak kullanılacak bir dizgeden kaçmanın kolay bir yolu var mı?Oyun 2.0 görünümünde bir JavaScript dizesi mi kaçıyorsunuz?

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

yeni satırlar veya mesajda tek tırnak varsa başarısız olur: Örneğin, burada onClick bir onaylama kutusu ile bir bağlantı oluşturur basit bir görüntü. Bunu yapmanın en iyi yolu nedir?

cevap

13

Apache Commons Lang kullanabilirsiniz:

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

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

Sen project/Build.scala dosyasına ekleyerek şablonda açık ithalat önleyebilirsiniz: çözüm için

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

teşekkür ederiz. :) Oyna 2.1 kullanıyorum ve varsayılan dahil kütüphane 'apache-commons-lang3' olduğunu. 'Build.scala'ya org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript'i ekledim ve' escapeJavaScript' yerine şablonlarmdaki 'escapeEcmaScript'i kullandım' –

+0

Tamam, cevabımı düzenledim. –

+0

Bunu 'play''in html escaping' @Html (message) 'ile birleştirmek mümkün mü? '@escapeEcmaScript (Html ​​(message))' - çalışmıyor – Dfr

İlgili konular