java - 调用更新数据时出现异常
问题描述
这是我编辑数据的jsp文件。
客户编辑.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";
}
}
我得到带有数据的我的 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”(即字符串)的 int。
您可以将所有用户字段更改为字符串并检查(使用调试)哪个字段出现问题。
您应该确保客户端无法发送该字段的非数字类型,尽管这可能很棘手,因为您无法添加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";
}
推荐阅读
- spring - Spring ouath2Authserver oauth/token 为授予 client_credentials 返回内部服务器错误
- cypress - cypress 是否会支持 Edge Html 浏览器
- html - Bootstrap 下拉菜单未显示在选框内
- python - Pandas 数据框通过绝对值优化获得最大值和最小值
- rss - 如何选择合适的
在RSS?有清单吗? - python - 如何使用 pi 以弧度输出?
- microsoft-teams - 个性化的 Microsoft Teams 连接器配置页面
- oracle - 如何使用 Oracle Cloud Shell 连接 Oracle 云实例?
- amazon-web-services - 为 AWS::ApiGateway::ApiKey 重用 cloudformation 模板
- r - 索引在数据行中有错误条目