http://blog.sina.cn/dpool/blog/s/blog_58c5066001011gdn.htmljavascript
由於:html
<jsp:forward和<jsp:param在被編譯成java時是這樣的。java
jsp:apache
<%
String n1 = request.getParameter('userFirstName');
%>
<jsp:forward page='MyThirdJSP.jsp'>
<jsp:param name='userFirstName' value='<%= n1 %>' />
</jsp:forward>jsp
java:翻譯
out.write(_jsp_string2);
if (true) {
pageContext.forward('MyThirdJSP.jsp' + '?' +org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode('userFirstName', request.getCharacterEncoding())+ '=' + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode(String.valueOf( n1 ), request.getCharacterEncoding()) + '&' + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode('userLastName', request.getCharacterEncoding())+ '=' + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode(String.valueOf( n2 ), request.getCharacterEncoding()));
return;
}
out.write(_jsp_string5);code
JSP解析器在將jsp進行翻譯轉換爲Java的時候,會將<% %>中的內容視做字符串並直接嵌入生成的java代碼中,而嵌套的雙引號破壞了jsp文件的格式,使得 value='<%= %>' 代碼段中的代碼不是正確的JAVA代碼,並且java中字符串不容許像javascript那樣使用單引號(例如'Test'),因此致使了Compile error。
解決這個問題,須要使用轉義符「\」。htm
因此:blog
使用<%=%>表達式給屬性賦值時,須要對雙引號進行轉義:ip
<jsp:forward page=「MyThirdJSP.jsp」><jsp:param name=」userFirstName」 value=」<%= request.getParameter(\」userFirstName\」) %>」/></jsp:forward>