簡體   English   中英

引用 freemarker、java 和 javascript 之間的問題

[英]quotes problems between freemarker, java and javascript

我對單引號有疑問,將一個單詞(例如:patte't)從 java 發送到 html(freemarker)然后在“onClick”js ZC1C425268E68385D1AB5074F 上使用變量

我已經嘗試在 java 中進行額外的轉義,但變量 display 將包含 '\'(patte\'t)。 onClick 在這種情況下工作正常。 如果我在 java 中使用簡單的轉義,則變量顯示很好,但 onClick 不起作用(參數如:onClick('patte't')),在這種情況下我得到一個錯誤。

<tr id="contactList" onclick="Ws('${contact.id!''}','${contact.name!''}');">
some <td>
</tr>
contact.name contains a single quote in his value



ex:
Java send: pette't
html displays: pette't
onClick: error(onClick('patte't'))

Thanks everyone

Two layer of escaping is needed in such case: JavaScript string escaping, and then HTML escaping.

對於 JavaScript 字符串 escaping,使用?js_string 有了這個,你會得到類似onclick="Ws('someId', 'patte\'t')"東西。 如果名稱包含"仍然會被破壞,因為這將關閉 HTML 屬性值,盡管?js_string會將其轉義為\" (因為\在 HTML 中沒有特殊含義)。 So the second layer is HTML escaping, which will replace " with &quot; and so on. The good practice is to turn on HTML auto-escaping when generating HTML pages; if it's not turned on on application level, turn it on. (If然后你不能用<#ftl output_format='HTML'>開始模板。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM