我知道有很多JavaScript逃避问题,但似乎没有什么能满足我的需求。
我在JSP上动态显示textarea元素。在无效表单提交的情况下,我需要使用用户输入的值重新填充这些字段。我是这样做的(注意:简化版):
var textareaBox = document.getElementById("myTextArea");
if (textareaBox) {
textareaBox.value = '${myForm.myValue}';
}
一切正常,直到用户在包含特殊字符的框中输入值。我已尝试单独使用escape
和unescape
JavaScript函数,但无法使用。
有谁知道我如何处理这些特殊字符值?请注意,我显然不希望textarea中的转义文本,因为这对用户来说不太好看。
答案 0 :(得分:2)
使用JSTL的<c:out>
标记对其进行转义,并将其指定为文本区域的innerHTML
:
textareaBox.innerHTML = '<c:out value="${myForm.myValue}" />';
但是为什么不直接在textarea的主体中显示它而不需要JS?
<textarea id="myTextArea"><c:out value="${myForm.myValue}" /></textarea>
<c:out>
(及其EL函数对应fn:escapeXml()
)转义XML特殊字符。