JSP 网上商城产品添加为什么会报错??
- Java code
<% request.setCharacterEncoding("GBK"); int categoryId = -1; String strCategoryId = request.getParameter("categoryId"); if(strCategoryId != null && !strCategoryId.trim().equals("")) { categoryId = Integer.parseInt(strCategoryId); }String action = request.getParameter("action");if(action != null && action.trim().equals("add")) { String name = request.getParameter("name"); double normalPrice = Double.parseDouble(request.getParameter("normalPrice")); double memberPrice = Double.parseDouble(request.getParameter("memberPrice")); String descr = request.getParameter("descr"); Product p = new Product(); p.setName(name); p.setNormalPrice(normalPrice); p.setMemberPrice(memberPrice); p.setDescr(descr); p.setCategoryId(categoryId); p.setPdate(new Date()); ProductMgr.getInstance().add(p);%><script type="text/javascript"> parent.main.location.reload(); //--> </script><% }%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>添加产品</title> </head> <center> 产品添加 </center> <body> <form action="ProductAdd.jsp" name="productadd" method="post"> <table border="1" align="center"> <input type="hidden" name="action" value="add" /> <tr> <td> 产品名称: </td> <td> <input name="name" size="25" maxlength="25" type="text"> </tr> <tr> <td> 市场价格: </td> <td> <input name="normalPrice" size="25" type="text"> </td> </tr> <tr> <td> 会员价格: </td> <td> <input name="memberPrice" size="25" type="text"> </td> </tr> <tr> <td> 所属类别 </td> <td> <select name="categoryId"> <% List<Category> categories = CategoryService.getInstance().getCategories(); for (Iterator<Category> it = categories.iterator(); it.hasNext();) { Category c = it.next(); String selected = ""; if (c.getId() == categoryId) selected = "selected"; String preStr = ""; for (int i = 1; i < c.getGrade(); i++) preStr += "--"; %> <option value="<%=c.getId()%>|<%=c.getGrade()%>" <%=selected%>><%=preStr + c.getName()%></option> <% } %> </select> </td> </tr> <tr> <td valign="top"> 产品描述: </td> <td> <textarea name="descr" cols="60" rows="5" id="descr"></textarea> </td> </tr> </table> <center> <input type="submit" name="submit" value="提 交"> <input type="reset" name="reset" value="重 置"> <br> <br> <a href="ProductList.jsp">返回列表</a> </center> </form> </body></html>
报错
2012-9-18 18:25:44 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: For input string: "9|2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:456)
at java.lang.Integer.parseInt(Integer.java:497)
at org.apache.jsp.admin.ProductAdd_jsp._jspService(ProductAdd_jsp.java:64)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
哪里的问题,求解...为什么字符转换没有转成功???
[解决办法]
java.lang.NumberFormatException: For input string: "9|2"
这么明显。
字符串"9|2" 不能转换为Number
[解决办法]
把 9|2 拆分了
[解决办法]
- Java code
int categoryId = -1; String strCategoryId = "9|2"; categoryId = Integer.parseInt(strCategoryId.split("\\|")[0]); // categoryId=2的就是[1] System.out.println(categoryId);
[解决办法]
<option value="<%=c.getId()%>|<%=c.getGrade()%> 应该取的是这里的值
String go = "9|2"; 是这么一个值
c.getId() 可以这样取 go.substring(0,go.indexOf("|");
c.getGrade() 可以这样取 go.substring(go.indexOf("|")+1,go.length())