На моей странице «Обновление» у меня есть скрытое поле для хранения идентификатора текущего пользователя, редактируемого. Я проверил источник HTML, и значение заполняется правильно. Однако, когда я отправляю форму, значение userID ALLWAYS проходит через 0, а каждое другое поле выполняется правильно.Спрятанное значение весны формы при отправке
-Проанализировав тип как форму: ввод и отправку, все еще 0 на стороне контроллера.
-Нет связывания с ошибками.
-Страница URL: /admin/update-user.html?uid=3 (Я пытался не изменив переменную URL из UID в идентификатор пользователя, никакой разницы.)
Так что, черт возьми, происходит ?! Я пропустил что-то очевидное?
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";
}
}
Свойства объекта с соответствующими геттеры/сеттеры
private int userID;
private String firstName;
private String lastName;
private String username;
private String email;
private Date birthday;
private String gender;
Если вы нарушаете первую строку своего метода контроллера, вы видите объект User, заполненный? Имеет ли он идентификатор пользователя в этот момент? – CodeChimp
Я сделал System.out.println в первой строке метода Controller для каждого свойства, userID равно 0, все остальное произошло с правильными значениями. – Felix
Используя '@RequestParam ("userID") int userID' в моем вызове метода, я могу получить правильное значение. Итак, что-то о том, что userID не имеет обязательной привязки при отправке формы. – Felix