zoukankan      html  css  js  c++  java
  • <jsp:param>标签给属性赋值时的一个坑

    http://blog.sina.cn/dpool/blog/s/blog_58c5066001011gdn.html

    因为:

    <jsp:forward和<jsp:param在被编译成java时是这样的。

    jsp:

    <%
    String n1 = request.getParameter('userFirstName');
    %>
    <jsp:forward page='MyThirdJSP.jsp'>
    <jsp:param name='userFirstName' value='<%= n1 %>' />
    </jsp:forward>

    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);

    JSP解析器在将jsp进行翻译转换为Java的时候,会将<% %>中的内容视作字符串并直接嵌入生成的java代码中,而嵌套的双引号破坏了jsp文件的格式,使得 value='<%= %>' 代码段中的代码不是正确的JAVA代码,而且java中字符串不允许像javascript那样使用单引号(例如'Test'),所以导致了Compile error。
    解决这个问题,需要使用转义符“”。

    所以:

    使用<%=%>表达式给属性赋值时,需要对双引号进行转义:

    <jsp:forward page=“MyThirdJSP.jsp”>
    <jsp:param name=”userFirstName” value=”<%= request.getParameter(”userFirstName”) %>”/>
    </jsp:forward>

  • 相关阅读:
    2019ICPC上海站
    “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛(2018)
    集合问题
    后缀数组
    141. 周期(KMP)
    求和(矩阵快速幂)
    大数(KMP)
    1270: [蓝桥杯2015决赛]完美正方形
    AC自动机
    8.26作业
  • 原文地址:https://www.cnblogs.com/mabaishui/p/8543987.html
Copyright © 2011-2022 走看看