<body> <% request.setCharacterEncoding("utf-8"); AssetName art=new AssetName(); art.setAsId(Integer.parseInt(request.getParameter("eid"))); art.setUID(request.getParameter("UID")); art.setAsnu(request.getParameter("asnu")); art.setAsnm(request.getParameter("asnm")); art.setAste(request.getParameter("aste")); art.setSpec(request.getParameter("spec")); IAsset ad=new AssetDao(); if(ad.update(art)>0) response.sendRedirect("Home.jsp"); else{ out.println("<script>alert('修改失败');location='Edit.jsp' </script>"); } %> </body>
上面这份是修改控制,
String eid = request.getParameter("eid"); if (eid == null) response.sendRedirect("Home.jsp"); else { IAsset ad=new AssetDao(); AssetName art=ad.getInfo(Integer.parseInt(eid));
上面这份是从修改页,Home.jsp中传入的
我是知道这里的eid应该是传到了Null,但是debug显示在没有执行这一行之前是有显示到eid=32,也就是在修改的页面传了过来才对。
art.setAsId(Integer.parseInt(request.getParameter("eid")));
这里给出的报错是以下,
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.apache.jsp.EditControl_jsp._jspService(EditControl_jsp.java:105)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
个人技术有限,不知道要怎么改,折腾了好多天一直传不到这个值也是醉了,对了,删除倒是可以直接传过去,没有影响,会不会是dao写错了?
补充,由按钮触发获得eid,且能够在Edit.jsp中获得,只是在执行控制的时候Debug返回了java.lang.NumberFormatException: null 相关错误,而且debug过程中,执行art.setAsId前是能获得eid的值。
onclick="location.href='Edit.jsp?eid=<%=art.getAsId()%>'"
你的String eid值是什么?打印到控制台看看。
这里我刚刚试了一下没有问题,打印出页面都没有问题,能输出且正确
@AzusaMed: 这里应该是个bug。如果时好时坏,eid这个参数你后台最好控制下,或者用一个只能输入数字的控件,或者对控件进行校验然后再传后台,不然,出过来的是字符串的话,你这个错就会再报。
@ckx0709: 不是 他对应数据库的值就是Id,所以我在修改控制里用了转换。我上面已经做了判断获得不了这个值的时候返回页面,应该不会是值的问题。
//<%=art.getAsId()%>
重新设置了控制页专门DEBUG,这次终结一下,EDIT.JSP里没有把传过去值的标签里name=id;之前传过去的是另一个测试值。