<jsp:setProperty 
    name="entry"
    property="itemID"
    value="<%= request.getParameter("itemID") %>" />
跟下面这样的写法有什么区别吗?<jsp:setProperty 
    name="entry"
    property="itemID"
    param="itemID" />我用下面那种运行正常,用上面那样的写法就报错:
org.apache.jasper.JasperException: /testbean/SaleEntry.jsp(24,14) Attribute value  request.getParameter("itemID")  is quoted with " which must be escaped when used within the value顺便问一下,Servlet和jsp中使用的javabean是不是都要有一个没有参数的空构造方法??

解决方案 »

  1.   

    你这样做的效果是一样,但他们的意思不一样.
    应该是没有参数的空构造方法,以前试过,不然会报错..
    第一个有value的,表示注入value里面的值;
    第二个有param的,表示注入url里面参数为itemId的值,没有param的时候就会注入javabean里面变量名跟url参数相同的值.
    index.jsp:
     <form action="next.jsp">
     <input type="text" name="itemId"/>
     <input type="submit" value="t"/>
     </form>
    next.jsp:
    <jsp:useBean id="tu" class="javabean.Tu">
    </jsp:useBean>
    <jsp:setProperty name="tu" property="itemId" value="<%=request.getParameter("itemId") %>" />
      <jsp:getProperty name="tu" property="itemId"/>
      </body>
    javabean:
    public class Tu {
    private String itemId;
       public  Tu(){

    }
    public String getItemId(){
    return this.itemId;
    }
    public void setItemId(String itemId){
    this.itemId=itemId;
    }
    }
    可以,不会报错.
      

  2.   

    第一种情况报错原因是括号打的不对
    jsp使用的javabean要有一个没有参数的空构造方法,而servlet就不一定
    因为servlet是你new对象,可以加参数,而jsp中是容器给你new对象的,必须要
    有一个没有参数的构造方法
      

  3.   


    <jsp:setProperty 
        name="entry"
        property="itemID"
        value="<%= request.getParameter("itemID") %>" />你把value=""的双引号 改成 value=''单引号就不会报错了