• <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>

  • 相关阅读:
    Swift学习-Property
    Swift学习-protocol
    Swift学习-Class
    Swift学习-Enumerate、Structure
    iOS“此时无法下载应用”解决办法
    iTunes Connect用户职能与权限
    TestFlight Beta Testing 开发指南中英对照
    梳理一下KVC
    mac下使用github 上传代码(转)
    运用Runtime全局修改UILabel的默认字体
  • 原文地址:https://www.cnblogs.com/mabaishui/p/8543987.html
Copyright © 2020-2023  润新知