JSP和JAVABEAN问题

2025-01-27 12:12:59
推荐回答(3个)
回答1:

1.关于setUserID报错The method setUserID(String) in the type OrderBean is not applicable for the arguments (Object)
其实很简单,你可以看一下HttpSession的API文档,getValue方法返回的是哟个Object类型,你可以把返回值进行强制类型转换,如:getValue((String)session.getValue("memberID")),这样比较安全,如果单纯使用session.getValue("memberID").toString()有可能会导致NullPointerException.

2.关于setOrderprice报错The method setOrderprice(String) in the type OrderBean is not applicable for the arguments (float)
其实很简单,说明setOrderprice方法的参数应该是String类型,你可以使用orderBean.setOrderprice(Float.toString(Float.parseFloat(str==null?"0":str)));
就可以了

修改后的代码:

<%@ page language="Java" contentType="text/html;charset=GB2312"%>


<%
/*禁止使用浏览器Cache,网页立即失效*/
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires",0);
%>



<br>填写订单<br>


<%
if ("send".equals(request.getParameter("send")))
{
orderBean.setUserID((String)session.getValue("memberID"));
String str=request.getParameter("receivername");
orderBean.setReceiverName(str);
str=request.getParameter("orderprice");
orderBean.setOrderprice(Float.toString(Float.parseFloat(str)));
str=request.getParameter("address");
orderBean.setReceiverAddress(str);
str=request.getParameter("postcode");
orderBean.setReceiverZip(str);
str=request.getParameter("bookinfo");
orderBean.setBookinfo(str);

int orderID=Integer.parseInt(orderBean.getOrderID());

if (orderID>0)
{ /*清空Cookie(购物车)信息*/
Cookie[] cookies=request.getCookies();
for (int i=0;i { String isbn=cookies[i].getName();
if (isbn.startsWith("ISBN")&&isbn.length()==8)
{ Cookie c=new Cookie(isbn,"0");
c.setMaxAge(0);//设定Cookie立即失效
response.addCookie(c);
}
}
%>

订购成功!


订单号:<%=orderID%>


返回首页


<%
}
else
{
out.print("订购失败\n");

}
}

else
{ float price=0;
String bookInfoStr="";

%>









<% /*读取购物车信息*/
Cookie[] cookies=request.getCookies();
for (int i=0;i { String isbn=cookies[i].getName();
String num=cookies[i].getValue();
if (isbn.startsWith("ISBN")&&isbn.length()==8)
{
bookinfo.setBookISBN(isbn.substring(4,8));
Float bookPrice = new Float(bookinfo.getPrice());
%>








<%
price += bookPrice.floatValue()*java.lang.Integer.parseInt(num);
bookInfoStr += bookinfo.getBookISBN()+"="+num+";";

}

}
%>
ISBN 书名 单价 数量 价格
<%= bookinfo.getBookISBN()%> <%= bookinfo.getBookName()%> <%= bookPrice%>
<%= bookPrice.floatValue()*java.lang.Integer.parseInt(num)%>

 








 

 

如以上信息无误,请填写以下信息并按提交按钮提交订单,完成网上订书:



























收书人姓名

订单总金额

发送地址

邮编

备注







<%
}
%>

回答2:

orderBean.setUserID(session.getValue("memberID"));
session.getValue("memberID")取出的是对象 不是 整形的
如果你的是 String类型的orderBean.setUserID(session.toString());
如果你的是int类型的
orderBean.setUserID(Integer.parseInt(session.toString()));
也是一样 setOrderPrice 看看是否是float类型的
orderBean.setOrderprice(java.lang.Float.valueOf(str==null?"0":str).floatValue());

回答3:

session里取出的值是object,需要强制转换成String