<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是不是都要有一个没有参数的空构造方法??
应该是没有参数的空构造方法,以前试过,不然会报错..
第一个有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;
}
}
可以,不会报错.
jsp使用的javabean要有一个没有参数的空构造方法,而servlet就不一定
因为servlet是你new对象,可以加参数,而jsp中是容器给你new对象的,必须要
有一个没有参数的构造方法
<jsp:setProperty
name="entry"
property="itemID"
value="<%= request.getParameter("itemID") %>" />你把value=""的双引号 改成 value=''单引号就不会报错了