我正在尝试更新员工完成的旅行次数。
在下表中,我获取了员工列表和每个员工完成的行程次数,以及更新该号码的输入字段。但是,我得到了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)
答案 0 :(得分:1)
所以从错误的细节来看,很明显valueOf试图解析代码中的 null 。你无法解析&#34; null&#34;到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(&#39; nbTrips&#39;),这将返回具有相同&#39; nbTrips&#39;的元素的所有值。
String[] nbTrips = request.getPrameterValues('nbTrips')
将返回名称为&#39; nbTrips&#39;的所有文本框值。到String数组nbTrips,你可以迭代并从textBox中获取每个值。