我正在使用 Spring 3 和 Hibernate 4 来构建我的项目。
我的问题是,例如,一个 User 对象有五个字段,id、name、password、school 和 address。我只授予用户更新/编辑他的学校和/或地址的权利。当用户第一次通过 GET 访问编辑页面时,我想用用户的现有信息填充该字段。
单击提交按钮后,我想通过休眠更改数据库中相应的更新字段。
控制器.java
@RequestMapping(value="/edit/{userId}", method="RequestMethod.GET")
public String toEdit(Model model,@PathVariable int userId){
User user = userService.get(userId);
model.addAttribute("command",user);
return "/edit";
}
@RequestMapping(value="/save", method="RequestMethod.POST")
public String toSave(Model model){
//how to implement this?
}
编辑.jsp
<form:form action="/save" method="POST">
<form:input path="school"/>
<form:input path="address"/>
<input type="submit"/>
</form:form>
我的想法是,如果我可以将那些未更新的字段作为隐藏字段放在edit.jsp页面中,以便在用户对象重新绑定时(提交表单时),我仍然可以捕获用户的ID,名称和密码信息.
我的方法的缺陷是显而易见的。首先,密码作为隐藏字段永远不是要走的路。其次,它在edit.jsp 页面上添加了不必要的信息。
我的第二个想法是我只能将用户ID作为隐藏字段放在edit.jsp中,提交表单时,我可以使用User user = userService.get(command.id)
获取相应的用户对象并将字段(例如学校或地址)设置为新输入的字段类似的东西user.setSchool(command.getSchool())
。在所有这些之后,我可以更新用户对象。这种方法有点麻烦,因为如果我有很多字段要更新,就会有很多代码。
有一个更好的方法吗?(我相信一定有一个)我对 Spring 和 Hibernate 很陌生,所以如果我遗漏了一些非常明显的东西,请告诉我。
谢谢。