解决方案:
1、建立WEB-INF/tags/format/enter.tag文件,其文件内容如下:
01 <%@ tag body-content="scriptless" pageEncoding="utf-8" %><%@ attribute name="value" type="java.lang.String" required="true"%><%
02 if(value != null) {
03 int lengthh = value.length();
04 StringBuffer filtered = new StringBuffer(lengthh);
05 char prevChar = '\u0000';
06 char c;
07 for (int i = 0; i < lengthh; i++) {
08 c = value.charAt(i);
09 if (c == '"') {
10 filtered.append("\\\"");
11 } else if (c == '\'') {
12 filtered.append("\\'");
13 } else if (c == '\\') {
14 filtered.append("\\\\");
15 } else if (c == '\t') {
16 filtered.append("\\t");
17 } else if (c == '\n') {
18 if (prevChar != '\r') {
19 filtered.append("\\n");
20 }
21 } else if (c == '\r') {
22 filtered.append("\\n");
23 } else if (c == '\f') {
24 filtered.append("\\f");
25 } else if (c == '/') {
26 filtered.append("\\/");
27 } else {
28 filtered.append(c);
29 }
30 prevChar = c;
31 }
32 value = String.valueOf(filtered);
33 }
34 out.print(value);
35 %>
2、页面运用,代码示例如下:
01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 <%@ taglib tagdir="/WEB-INF/tags/format" prefix="format" %>
03
04 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
05 <html>
06 <head>
07 <title></title>
08
09 <meta http-equiv="pragma" content="no-cache">
10 <meta http-equiv="cache-control" content="no-cache">
11 <script type="text/javascript">
12 function doTest() {
13 //var testValue = '${valueFromJava }';// 这种复制若valueFromJava中含有特殊字符,此时会报错
14 var testValue = '<format:enter value="${s.content }" />';// 这种处理就……
15 }
16 </script>
17 </head>
18
19 <body>
20
21 </body>
22 </html>
注:js中的特殊字符有:
转义序列 字符
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\" 双引号
\\ 反斜杠
解决方案:
1、建立WEB-INF/tags/format/enter.tag文件,其文件内容如下:
01 <%@ tag body-content="scriptless" pageEncoding="utf-8" %><%@ attribute name="value" type="java.lang.String" required="true"%><%
02 if(value != null) {
03 int lengthh = value.length();
04 StringBuffer filtered = new StringBuffer(lengthh);
05 char prevChar = '\u0000';
06 char c;
07 for (int i = 0; i < lengthh; i++) {
08 c = value.charAt(i);
09 if (c == '"') {
10 filtered.append("\\\"");
11 } else if (c == '\'') {
12 filtered.append("\\'");
13 } else if (c == '\\') {
14 filtered.append("\\\\");
15 } else if (c == '\t') {
16 filtered.append("\\t");
17 } else if (c == '\n') {
18 if (prevChar != '\r') {
19 filtered.append("\\n");
20 }
21 } else if (c == '\r') {
22 filtered.append("\\n");
23 } else if (c == '\f') {
24 filtered.append("\\f");
25 } else if (c == '/') {
26 filtered.append("\\/");
27 } else {
28 filtered.append(c);
29 }
30 prevChar = c;
31 }
32 value = String.valueOf(filtered);
33 }
34 out.print(value);
35 %>
2、页面运用,代码示例如下:
01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 <%@ taglib tagdir="/WEB-INF/tags/format" prefix="format" %>
03
04 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
05 <html>
06 <head>
07 <title></title>
08
09 <meta http-equiv="pragma" content="no-cache">
10 <meta http-equiv="cache-control" content="no-cache">
11 <script type="text/javascript">
12 function doTest() {
13 //var testValue = '${valueFromJava }';// 这种复制若valueFromJava中含有特殊字符,此时会报错
14 var testValue = '<format:enter value="${s.content }" />';// 这种处理就……
15 }
16 </script>
17 </head>
18
19 <body>
20
21 </body>
22 </html>
注:js中的特殊字符有:
转义序列 字符
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\" 双引号
\\ 反斜杠