【问题标题】:Cannot Convert Int to String in Servlet无法在 Servlet 中将 Int 转换为字符串
【发布时间】:2019-12-14 19:53:10
【问题描述】:

我尝试了一种插入数据的方法,但是解析值时出错。此错误似乎是在我的插入方法中将 int 转换为字符串的过程中,并显示此错误:

type Exception report

message null

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

exception

java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Integer.java:542)
    java.lang.Integer.parseInt(Integer.java:615)
    servlet.JobServlet.insert(JobServlet.java:137)
    servlet.JobServlet.doGet(JobServlet.java:85)
    servlet.JobServlet.doPost(JobServlet.java:123)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

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

帮我修一下。

这是我在 servlet 上的插入方法:

private void insert(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        String id = request.getParameter("idJob");
        String title = request.getParameter("titleJob");
        int min = Integer.parseInt(request.getParameter("minSalary"));
        int max = Integer.parseInt(request.getParameter("maxSalary"));
        dao.save(new Job(id, title, min, max));
        response.sendRedirect("jobServlet?action=list");
    }

这是我的jsp代码:

    <div class="card-body card-block">
                                    <form action="jobServlet?action=insert" method="post" class="form-vertical">
                                        <div class="row form-group">
                                            <div class="col-12 col-md-9">
                                                <input type="text" id="idJob" name="idJob" placeholder="Enter Job Id..." class="form-control">
                                            </div>
                                            <div class="col-12 col-md-9">
                                                <input type="text" id="titleJob" name="titleJob" placeholder="Enter Job Title..." class="form-control">
                                            </div>
                                            <div class="col-12 col-md-9">
                                                <input type="text" id="minSalary" name="minSalary" placeholder="Enter Minimal Salary..." class="form-control">
                                            </div>
                                            <div class="col-12 col-md-9">
                                                <input type="text" id="maxSalary" name="maxSalary" placeholder="Enter Maximal Salary..." class="form-control">
                                            </div>
                                        </div>
                                        <input type="submit" name="submit" value="Save" class="btn btn-primary btn-sm"/>

我试过了,但还是不行:

private void insert(HttpServletRequest request, HttpServletResponse response)
                throws SQLException, IOException {
            String id = request.getParameter("idJob");
            String title = request.getParameter("titleJob");
            String min = request.getParameter("minSalary");
            String max = request.getParameter("maxSalary");
            dao.save(new Job(id, title, Integer.parseInt(min),Integer.parseInt(max)));
            response.sendRedirect("jobServlet?action=list");
        }

【问题讨论】:

  • 消息 java.lang.NumberFormatException: null 很清楚,添加日志语句并尝试调试为什么您的参数为 null。

标签: java html jsp servlets


【解决方案1】:

检查您的请求(如果您使用浏览器,这很容易做到)并查看 maxSalary 和 minSalary 是否通过。其中之一为空。

此外,如果您使用的是 html5,则无需使用文本作为输入类型。只需使用数字,您将获得一个 int。

此外,无论您在何处使用 Integer.parseInt(),都会捕获数字格式异常。

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多