调用更新数据时出现异常
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";
}
这是我要编辑数据的 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";
}