调用更新数据时出现异常

Exception while calling updating data

这是我要编辑数据的 jsp 文件。

CustomerEdit.jsp

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Edit</title>
</head>
<body>
<div align="center">

<h3>Edit Customer Information</h3>

</div>
<form:form id="editForm" modelAttribute="user" action="editsave"
method="post">

 <table align="center">
<tr>
<td><form:label path="customerid"></form:label></td>
<td><form:hidden path="customerid" name="customerid" id="customerid" /></td>
</tr>
<tr>
<td><form:label path="firstname">Firstname</form:label></td>
<td><form:input path="firstname" name="firstname" id="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname">Lastname</form:label></td>
<td><form:input path="lastname" name="lastname" id="lastname" /></td>
</tr>
<tr>
<td><form:label path="street">Street</form:label></td>
<td><form:input path="street" name="street" id="street" /></td>
</tr>
<tr>
<td><form:label path="city">City</form:label></td>
<td><form:input path="city" name="city" id="city" /></td>
</tr>
<tr>
<td><form:label path="province">Province</form:label></td>
<td><form:input path="province" name="province" id="province" /></td>
</tr>
<tr>
<td><form:label path="country">Country</form:label></td>
<td><form:input path="country" name="country" id="country" /></td>
</tr>
<tr>
<td><form:label path="birthday">Birthday</form:label></td>
<td><form:input path="birthday" name="birthday" id="birthday" /></td>
</tr>
<tr>
<td><form:label path="sin">SIN</form:label></td>
<td><form:input path="sin" name="sin" id="sin" /></td>
</tr>
<tr>
<td><form:label path="passport">Passport Number</form:label></td>
<td><form:input path="passport" name="passport" id="passport" /></td>
</tr>
<tr>
<td><form:label path="nationality">Nationality</form:label></td>
<td><form:input path="nationality" name="nationality" id="nationality" /></td>
</tr>
<tr>
<td><form:label path="email">Email Address</form:label></td>
<td><form:input path="email" name="email" id="email" /></td>
</tr>
<tr>
<td><form:label path="loginid"></form:label></td>
<td><form:hidden path="loginid" name="loginid" id="loginid" /></td>
</tr>
<tr>
<td><form:label path="password">Password</form:label></td>
<td><form:password path="password" name="password"
id="password" /></td>
</tr>
<tr>
<td></td>
<td><form:button id="submit" name="submit">Save</form:button></td>
</tr>
</table>
 </form:form>
</body>
</html>

和我的控制器

@Controller
public class RegisterControl {​​​
 @Autowired
 UserDao dao;

@RequestMapping(value = "/editcust/{customerid}")
public ModelAndView edit(@PathVariable int customerid, Model m) {
   User cust = dao.getCustomerById(customerid);
   ModelAndView mav = new ModelAndView("CustomerEdit");
   mav.addObject("user", cust);
   return mav;
}

 public UserService userService;
 @RequestMapping(value = "/editsave", method = RequestMethod.POST)
 public String editsave(@ModelAttribute("user") User user) {
    System.out.println("HELLOOOOO!!!!!");
    dao.update(user);
    return "redirect:/homepage";
 }
}

我收到带有数据的 My customerEdit 表单。但是当我点击保存更新我的数据时,我得到了异常

Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "editsave"]

我什至没有在控制台上打印 HELLOOOO。

PS: 我的注册表可以正常工作,但在更新数据时出现错误。

请帮忙。提前致谢。

显然,您正在发送某种类型的用户字段,该字段被声明为等于“editsave”(字符串)的整数。

您可以将所有用户字段更改为字符串并检查(使用调试)哪个字段出现问题。

您真的应该确保客户端无法发送该字段的非数字类型,尽管这可能很棘手,因为您无法添加 type 属性,因为 spring:input 形式标签不支持 type 属性,也没有 spring:number 这样的东西。但是您可以使用 jquery 将 type="number" 属性添加到已解析的 html 中。像这样:

$(".selector").attr({
    "type" : "number",
});

新异常后编辑:

您还需要将 BindingResult 添加到您的控制器方法中。如果您想验证用户对象的任何字段,您可以在其中设置错误。如果没有,你可以复制我的代码片段

public UserService userService;
 @RequestMapping(value = "/editsave", method = RequestMethod.POST)
 public String editsave(@ModelAttribute("user") User user, BindingResult result) {
    System.out.println("HELLOOOOO!!!!!");
    dao.update(user);
    return "redirect:/homepage";
 }