读书人

JSP 网下商城产品添加为什么会报错?

发布时间: 2012-09-28 00:03:35 作者: rapoo

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="提&nbsp交">                <input type="reset" name="reset" value="重&nbsp置">                <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())

读书人网 >Java Web开发

热点推荐