2012-03-16 10 views
11

Play 2.0 में एक दृश्य में जावास्क्रिप्ट स्ट्रिंग के रूप में उपयोग करने के लिए एक स्ट्रिंग से बचने का कोई आसान तरीका है?Play 2.0 व्यू में एक जावास्क्रिप्ट स्ट्रिंग से बचें?

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

अगर वहाँ नई पंक्तियों या संदेश में एकल उद्धरण हैं असफल हो जायेगी कि: उदाहरण के लिए, यहाँ एक सरल विचार है कि onclick में एक की पुष्टि बॉक्स के साथ लिंक प्रदान करता है है। ऐसा करने का सबसे अच्छा तरीका क्या है?

उत्तर

13

आप अपाचे कॉमन्स लैंग का उपयोग कर सकते हैं:

@(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' –

+0

ठीक है, मेरे उत्तर में मेरे टेम्पलेट्स में 'escapeEcmaScript' का उपयोग किया, ठीक है, मैंने अपना जवाब संपादित किया। –

+0

क्या इसे 'play' के HTML escaping' @Html (message) 'से जोड़ना संभव है? '@escapeEcmaScript (एचटीएमएल (संदेश))' - – Dfr

संबंधित मुद्दे