解決方案: 一、創建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 %> 二、頁面運用,代碼示例以下: 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) \' 單引號 \" 雙引號 \\ 反斜槓
解決方案: 一、創建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 %> 二、頁面運用,代碼示例以下: 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) \' 單引號 \" 雙引號 \\ 反斜槓