技术难难题:Type mismatch: cannot convert from int to String 加分的

wswang 2008-05-14 02:40:12
问题如下 :type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 9 in the jsp file: /cart/cart_order.jsp
Generated servlet error:
Type mismatch: cannot convert from int to String


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:409)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.


代码如下:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.util.Vector"%>
<%@ page import="beans.teaelement"%>
<%@ page import="java.util.Date"%>
<jsp:useBean id="connDB" scope="page" class="beans.connDB"/>
<jsp:useBean id="chStr" scope="page" class="beans.chStr"/>
<jsp:include page="safe.jsp"/>

<%
String username=chStr.chStr(request.getParameter("username"));
String truename=chStr.chStr(request.getParameter("truename"));
String address=chStr.chStr(request.getParameter("address"));
String postcode=request.getParameter("postcode");
String tel=request.getParameter("tel");
String pay=chStr.chStr(request.getParameter("pay"));
//out.println("<script>alert(' pay= "+String.valueOf(pay)+" ')</script>");
String carry=chStr.chStr(request.getParameter("carry"));
String email=request.getParameter("email");
String bz=chStr.chStr(request.getParameter("bz"));
String orderID=String.valueOf(Math.random()).substring(5,15);
//orderID随即生成,10位
//out.println("<script>alert(' orderID= "+String.valueOf(orderID)+" ')</script>");


Vector cart=(Vector)session.getAttribute("cart");
int number=0;
float price=0;
float sum=0;
float Totalsum=0;
String flag="True";
int temp=0;

//插入订单主表数据
int tnumber=cart.size();
// out.println("<script>alert(' tnumber= "+tnumber+" ')</script>");
// 测试 tnumber,正确
String sql="insert into ORDER_(ORDERID,TNUMBER,USERNAME,TURENAME,ADDRESS,ZIPCODE,TEL,EMAIL,PAY,CARRY,ORDERDATE,BEIZHU,SUMMDE,STATE) values('"+orderID+"',"+tnumber+",'"+username+"','"+truename+"','"+address+"',"+postcode+",'"+tel+"','"+email+"','"+pay+"','"+carry+"',getdate(),'"+bz+"',"+Totalsum+",'1')";
//out.print(sql+"*****");
//插入日期用oracle自带的getdate()

temp=connDB.executeUpdate(sql);
out.println(sql);
if (temp==0){
flag="false";
// out.println("<script>alert('temp= "+String.valueOf(temp)+" ')</script>");
}else{
orderID=temp;
out.println("<script>alert(' temp= "+String.valueOf(temp)+" ')</script>");
}
//插入订单明细表数据
for(int i=0;i<cart.size();i++){
teaelement myteaelement=(teaelement)cart.elementAt(i);
String COMMODITYID=myteaelement.COMMODITYID;
price=myteaelement.price;
number=myteaelement.number;
sum=price*number;
String sql_companyid="select COMMODITYNAME,COMPANYNAME,QUANTITY from TEA_INFO where COMMODITYID='"+COMMODITYID+"'";
ResultSet rs_company=connDB.executeQuery(sql_companyid);
String COMPANYNAME="";
if(!rs_company.next()){
session.invalidate();
out.println("<script language='javascript'>alert('rs_company出错!');window.location.href='index.jsp';</script>");
return;
}else{
COMPANYNAME=rs_company.getString("COMPANYNAME");}
String id=String.valueOf(Math.random()).substring(6,17);
String str="insert into ORDER_DETAIL (ID_,ORDERID,COMMODITYID,PRICE,NUMBER_,COMPANYNAME) values('"+id+"','"+orderID+"','"+COMMODITYID+"',"+price+","+number+",'"+COMPANYNAME+"')";

temp=connDB.executeUpdate(str);
out.println(str);
//更新已卖商品数量
String sql_snumber="update TEA_INFO set SNUMBER=SNUMBER+'"+number+"'where COMMODITYID='"+COMMODITYID+"'";
temp=connDB.executeUpdate(sql_snumber);

String COMMODITYNAME=rs_company.getString("COMMODITYNAME");
//更新库存量
int QUANTITY=rs_company.getInt("QUANTITY");
QUANTITY=QUANTITY-number;
if(QUANTITY>=0){
String sql_q="update TEA_INFO set QUANTITY='"+QUANTITY+"'where COMMODITYID='"+COMMODITYID+"'";
temp=connDB.executeUpdate(sql_q);
}
else{
out.println("<script language='javascript'>alert('商品"+COMMODITYNAME+"库存量不足,生成订单失败');window.location.href='../../Cars/cart/cart_see.jsp';history.back();</script>");
//temp=0;
}

Totalsum=Totalsum+sum;
//out.println(Totalsum);
if (temp==0){
flag="false";
}
}

if(flag.equals("false")){
out.println("<script language='javascript'>alert('订单无效');history.back();</script>");
}
else
{
session.removeAttribute("cart");
out.println("<script language='javascript'>alert('订单生成,请记住您的订单号["+orderID+"]');window.location.href='/Cars/index.jsp';</script>");
}
connDB.close();
%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

javabean代码如下:// Source File Name: teaelement.java

package beans;


public class teaelement
{

public teaelement()
{
}

public String COMMODITYID;
public float price;
public int number;
}



我知道应该是这里有问题:else{
orderID=temp;
out.println("<script>alert(' temp= "+String.valueOf(temp)+" ')</script>");
}
省略了它的话没有出错,但数据库存添加不了.
...全文
1922 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyl_wind 2008-05-14
  • 打赏
  • 举报
回复
else{
orderID=temp;

此处改为
else{
orderID=Integer.toString(temp);

这样就可以了
wswang 2008-05-14
  • 打赏
  • 举报
回复
呵呵,明天才可以加分的,明天再加上去啦
jiaping108 2008-05-14
  • 打赏
  • 举报
回复
现在只能用四个字来形容俺的心情,羞愧欲死....不要分了,刚才的又写错了

String tmpStr= Integer.toString(temp);//这里刚才顺序写反了...
orderID=tmpStr; //回楼上的,没看这里有个赋值操作吗....你把一个整形赋给一个string型啊....
out.println(" <script>alert(' temp= "+String.valueOf(tmpStr)+" ') </script>");
}

wswang 2008-05-14
  • 打赏
  • 举报
回复
20楼的大哥,照你上面方法改了还是出现原来那种错误啊
newjavamaker 2008-05-14
  • 打赏
  • 举报
回复
Vector cart=(Vector)session.getAttribute("cart");
int number=0;
float price=0;
float sum=0;
float Totalsum=0;
String flag="True";
int temp=0; !看他这里jiaping108

String.valueOf(temp)就OK了你干吗还要Integer.parseInt(temp).toString呢?
jiaping108 2008-05-14
  • 打赏
  • 举报
回复
我错了,我日,直接拿他们的了~~这样就OK了

String tmpStr= Integer.(temp).toString;
orderID=tmpStr;
out.println(" <script>alert(' temp= "+String.valueOf(tmpStr)+" ') </script>");
}


jiaping108 2008-05-14
  • 打赏
  • 举报
回复
对了,
out.println(" <script>alert(' temp= "+String.valueOf(temp)+" ') </script>");
这里这个temp你也包装下撒,改成
out.println(" <script>alert(' temp= "+String.valueOf(Integer.parseInt(temp).toString )+" ') </script>");
其实最好这样,看起来舒服一些~解决了的话速度给分撒,呵呵

String tmpStr= Integer.parseInt(temp).toString;
orderID=tmpStr;
out.println(" <script>alert(' temp= "+String.valueOf(tmpStr)+" ') </script>");
}

wswang 2008-05-14
  • 打赏
  • 举报
回复
呵呵,17楼兄弟代码运行后会出现这样错误:org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 9 in the jsp file: /cart/cart_order.jsp
Generated servlet error:
The method parseInt(String, int) in the type Integer is not applicable for the arguments (int)
jiaping108 2008-05-14
  • 打赏
  • 举报
回复
也就是else{
orderID=Integer.parseInt(temp).toString
;
jiaping108 2008-05-14
  • 打赏
  • 举报
回复
LZ,把你的temp这样包装下就没问题了撒
Integer.parseInt(temp).toString
不晓得楼上这么多高手都在想什么.....
burningice44 2008-05-14
  • 打赏
  • 举报
回复
换个思维方式,从另一面去看
自己的项目,自己最清楚的
wswang 2008-05-14
  • 打赏
  • 举报
回复
问题还是解决不了.闷.
wswang 2008-05-14
  • 打赏
  • 举报
回复
迟些会给你分.
wswang 2008-05-14
  • 打赏
  • 举报
回复
11楼兄弟的代码else{
Integer.parseInt(orderID)=temp; 运行后出现org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 9 in the jsp file: /cart/cart_order.jsp
Generated servlet error:
The left-hand side of an assignment must be a variable
错误,多谢指教啊.
fulianglove 2008-05-14
  • 打赏
  • 举报
回复
代码太乱,实在看不下去。。。
newjavamaker 2008-05-14
  • 打赏
  • 举报
回复
else{
Integer.parseInt(orderID)=temp;
burningice44 2008-05-14
  • 打赏
  • 举报
回复
orderID=temp
他们两个第一个好像是string类型吧,
第二个是int类型,
这怎么赋值呢
wswang 2008-05-14
  • 打赏
  • 举报
回复
temp是变量啊,可以赋值给orderID的
wswang 2008-05-14
  • 打赏
  • 举报
回复
Integer.toString(temp)
4楼那位兄弟代码放到temp=connDB.executeUpdate(sql);
这句后面会出现
An error occurred at line: 9 in the jsp file: /cart/cart_order.jsp
Generated servlet error:
Syntax error on token "Invalid Character", ; expected
这种错误哦
burningice44 2008-05-14
  • 打赏
  • 举报
回复
是既然它等于0,那后面,为什么
orderID=temp; 呢,
orderID不是string类型吗?
加载更多回复(6)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧