【问题标题】:java jsp file update table field in databasejava jsp文件更新数据库中的表字段
【发布时间】:2023-03-11 03:30:01
【问题描述】:

我正在尝试更新员工完成的旅行次数。
在下表中,我得到了员工列表和每个人完成的旅行次数,以及一个用于更新该数字的输入字段。但是,我得到error 500 null
有人可以帮我解决这个问题吗?非常感谢。

Controller.java

        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    ....

            } else if (methode.equals("post") && action.equals("/updateemployees")) {
                doUpdateEmployee(request, response);
    ....


        private void doUpdateEmployee(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


                int tripsInitialvalue = Integer.valueOf(request.getParameter("nbTrips"));
[line: 177]     int id = Integer.valueOf(request.getParameter("id"));


                EmployeeDAO.addTrips(id,tripsInitialvalue);


                doEmployees(request, response);

            }

在我的 EmployeeDAO.java

public static Employee addTrips(int id, int tripsToAdd) {
        EntityManager em = GestionFactory.factory.createEntityManager();
        Employee employee = em.find(Employee.class, id);
        em.getTransaction().begin();
        int tripsInitialvalue = employee.getNbTrips();
        employee.setNbTrips(tripsInitialvalue + tripsToAdd);
        em.getTransaction().commit();
        em.close();
        return employee;
    }

还有我的 employees.jsp 文件:

<form method="post" action="<%= getServletContext().getContextPath()%>/do/updateemployees">  
<table>
    <tr>
        <th>Employee ID</th>
        <th>Name</th>
        <th>Number of Trips</th>        
        <th>Edit Trips</th>
    <tr>
<% for (Employee employee : employees) {%>
    <tr>
        <td><%=employee.getId()%></td>
        <td><%=employee.getName()%></td>        
        <td><%=employee.getNbTrips()%></td>     
        <td><input type="number" name="nbTrips" size="2" value="<%=employee.getNbTrips()%>"></td>
    </tr>
<% } %>
</table>
<input type="submit" value="Update"/>
</form>

错误日志:

Etat HTTP 500 - null
message null
java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Unknown Source)
    java.lang.Integer.valueOf(Unknown Source)
    projet.controleur.Controleur.doUpdateEmployee(Controller.java:177)
    projet.controleur.Controleur.doGet(Controller.java:109)
    projet.controleur.Controleur.doPost(Controller.java:69)
    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)

【问题讨论】:

  • 发布错误堆栈跟踪和相关代码行。
  • @SasiKathimanda 请查看更新后的问题,在控制器中添加错误日志和行号。

标签: java sqlite jsp jakarta-ee


【解决方案1】:

所以从错误细节中可以看出 valueOf 正在尝试解析代码中的 null。您无法将“null”解析为 int。

if(request.getParameter("id") != null) {

int id = Integer.valueOf(request.getParameter("id"));
EmployeeDAO.addTrips(id,tripsInitialvalue);

} else {
  //decide what to do when id is null
}

编辑: 要获取所有文本框的值,请使用 request.getParameterValues('nbTrips'),这将返回具有相同 'nbTrips' 的元素的所有值

String[] nbTrips = request.getPrameterValues('nbTrips')

会将名称为“nbTrips”的所有文本框值返回到字符串数组 nbTrips 中,您可以对其进行迭代并从 textBox 中获取每个值。

【讨论】:

  • 感谢建议,之前的错误已经消失了。但是当我更改数字并单击更新时,该值不会更新。
  • 因为它跳转到 else 部分并且没有任何反应。我应该怎么做才能更新字段?
  • 如果它跳转到 else 意味着它仍然为空,请继续调试,看看你在 req.getParameter 得到什么值
  • 问题是我不知道如何将员工的id 与表单中的新行程号一起传递给控制器​​,因为它需要两个参数 id 和新的行程价值。你能帮忙正确地写我的表格吗?谢谢
  • 但是当我添加这个 id 代码时,它只会更新列表中的第一个。我有所有员工的列表,输入字段对所有人都是可编辑的,所以我想为所有人输入新值并立即更新它们。
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多