【发布时间】:2013-02-19 02:03:47
【问题描述】:
在我的“更新用户”页面上,我有一个隐藏字段来保存正在编辑的当前用户的 ID。我已经检查了 HTML 源并且值正确填充。但是,当我提交表单时,用户 ID 值始终为 0,而其他所有字段都正确通过。
-我尝试将类型设置为 form:input 并提交它,在控制器端仍然为 0。
-没有绑定结果错误。
-Page URL:/admin/update-user.html?uid=3(我试过把URL变量从uid改成userID,没区别。)
那到底是怎么回事?!我错过了什么明显的东西吗??
JSTL
<form:form commandName="user" method="POST">
<form:hidden path="userID"/>
<table width="400" cellpadding="3" cellspacing="0" border="0" class="datatable">
<tr>
<td>User ID #</td>
<td>${user.userID}</td>
</tr>
<tr>
<td valign="top">Password</td>
<td>****<br /><a href="change-password.html?uid=${user.userID}">Change Password</a></td>
</tr>
<tr>
<td>First Name</td>
<td><form:input path="firstName" /></td>
</tr>
<tr>
<td>Last Name</td>
<td><form:input path="lastName" /></td>
</tr>
<tr>
<td>Gender: </td>
<td>
<form:select path="gender">
<form:option value="Male" label="Male" />
<form:option value="Female" label="Female" />
</form:select>
</td>
</tr>
<tr>
<td>Birthday: </td>
<td><form:input path="birthday" id="datepickerpast" readonly="true" /></td>
</tr>
<tr>
<td>Email</td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Update" /> <input type="reset"></td>
</tr>
</table>
</form:form>
控制器
@RequestMapping(value = "admin/update-user", method = RequestMethod.POST)
public String processUpdateUser(ModelMap model, @ModelAttribute("user") User user, BindingResult result) throws SQLException {
if (result.hasErrors()) {
model.addAttribute("user", user);
model.addAttribute("pagetitle", "Admin - Update User Details");
return "admin/users/update-user";
} else {
userDao.updateUser(user);
return "redirect:/admin/user-management.html";
}
}
具有适当 getter/setter 的对象属性
private int userID;
private String firstName;
private String lastName;
private String username;
private String email;
private Date birthday;
private String gender;
【问题讨论】:
-
如果您在控制器方法的第一行中断,您是否看到填充了 User 对象?那时它有用户ID吗?
-
我在 Controller 方法的第一行为每个属性做了一个 System.out.println,userID 为 0,其他所有属性的值都正确。
-
在我的方法调用中使用 '@RequestParam("userID") int userID' 我可以获得正确的值。所以关于用户ID 在表单提交时没有正确绑定。
标签: spring-mvc jstl modelattribute