在Spring MVC中处理编辑对象的正确方法是什么?可以说我有用户对象:在Spring MVC中处理更新表单
public class User {
private Integer id;
private String firstName;
private String lastName;
//Lets assume here are next 10 fields...
//getters and setters
}
现在在我的控制,我有GET和POST的网址:用户/编辑/ {ID}
@RequestMapping(value = "/user/edit/{user_id}", method = RequestMethod.GET)
public String editUser(@PathVariable Long user_id, Model model) {
model.addAttribute("userForm", userService.getUserByID(user_id));
return "/panels/user/editUser";
}
@RequestMapping(value = "/user/edit/{user_id}", method = RequestMethod.POST)
public String editUser(@Valid @ModelAttribute("userForm") User userForm,
BindingResult result, @PathVariable String user_id, Model model) {
if(result.hasErrors()) {
User user = userService.getById(user_id);
user.updateFields(userForm);
}
userService.update(user);
}
现在的问题是我是否真的需要我的用户从POST方法中的数据库并在某种更新方法中逐一更新每个字段,或者有更好的方法吗?
我正在考虑为用户使用@PathVariable,并从转换器的数据库中获取用户,然后以某种方式自动将参数从POST方法注入到该对象中。水木清华这样的:
@RequestMapping(value = "/user/edit/{user}", method = RequestMethod.POST)
public String editUser(@Valid @PathVariable("user") User userForm,
BindingResult result, Model model)
但是当我尝试这方面,我得到了错误与BindingResults:
java.lang.IllegalStateException:一个错误/ BindingResult参数预计模型属性之后立即宣布,在@RequestBody或@RequestPart参数
有没有什么简单的方法来创建控制器来处理对象编辑还是我需要复制可能会逐个更改的字段?
Btw我不能使用SessionAttributes,因为它会导致多个选项卡的问题。
如果你找到一个很好的解决方案,请分享它,因为我一直在寻找完全相同的问题。 –