標籤給屬性賦值時的一個坑

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>

相關文章
相關標籤/搜索