phép nói rằng chúng ta có một thực thể Person, một bộ điều khiển PersonController và một trang edit.jsp (tạo mới hoặc chỉnh sửa một người hiện có)@ModelAttribute chú thích, khi sử dụng nó?
khiển
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String editPerson(@RequestParam("fname") String fname, Model model) {
if(fname == null || fname.length() == 0){
model.addAttribute("personToEditOrCreate", new Person());
}
else{
Person p = personService.getPersonByFirstName(fname);
model.addAttribute("personToEditOrCreate", p);
}
return "persons/edit";
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String savePerson(Person person, BindingResult result) {
personService.savePerson(person);
return "redirect:/home";
}
edit.jsp
<form:form method="post" modelAttribute="personToEditOrCreate" action="save">
<form:hidden path="id"/>
<table>
<tr>
<td><form:label path="firstName">First Name</form:label></td>
<td><form:input path="firstName" /></td>
</tr>
<tr>
<td><form:label path="lastName">Last Name</form:label></td>
<td><form:input path="lastName" /></td>
</tr>
<tr>
<td><form:label path="money">Money</form:label></td>
<td><form:input path="money" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add/Edit Person"/>
</td>
</tr>
</table>
</form:form>
Tôi đang cố gắng mã ở trên (không sử dụng chú thích @ModelAttribute trong phương thức savePerson và nó hoạt động chính xác. Tại sao và khi nào tôi cần thêm chú thích vào đối tượng người:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String savePerson(@ModelAttribute("personToEditOrCreate") Person person, BindingResult result) {
personService.savePerson(person);
return "redirect:/home";
}
... nhưng các giá trị trong Mô hình không được duy trì trong các yêu cầu trừ khi bạn đang sử dụng RedirectAttributesModelMap? trong đó? – dade