2012-03-16 21 views
11

Có cách nào dễ dàng để thoát chuỗi được sử dụng làm chuỗi JavaScript trong chế độ xem trong Play 2.0 không? Ví dụ: đây là chế độ xem đơn giản tạo liên kết có hộp xác nhận trong onclick:Thoát chuỗi JavaScript trong chế độ xem Play 2.0?

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

Điều đó sẽ không thành công nếu có dòng mới hoặc dấu nháy đơn trong tin nhắn. Cách tốt nhất để làm điều này là gì?

Trả lời

13

Bạn có thể sử dụng 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> 

Bạn có thể tránh việc nhập khẩu rõ ràng trong mẫu bằng cách thêm vào tập tin project/Build.scala của bạn:

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

Cảm ơn cho các giải pháp. :) Tôi đang sử dụng Play 2.1 và thư viện được bao gồm mặc định là 'apache-commons-lang3'. Tôi đã thêm 'org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript' vào' Build.scala' và sử dụng 'escapeEcmaScript' trong các mẫu của tôi thay vì' escapeJavaScript' –

+0

OK, tôi đã chỉnh sửa câu trả lời của mình. –

+0

Có thể kết hợp điều này với việc thoát HTML của 'play'' @Html (message) 'không? '@escapeEcmaScript (Html ​​(message))' - không hoạt động – Dfr

Các vấn đề liên quan