Rest 中的更新方法(如控制器)
我想编写类似于实体更新的休息方法。在本例中,我从 url 检索实体 ID,从请求正文检索数据。问题在于 id 与 bean 的绑定。因为 EntityManager 和 Spring-Data Crud Repo 都没有 update(id, bean)
方法。所以我可以自己设置它
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public String update(@PathVariable("id") Long id, @Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
user.setId(id); //Very bad
return "usersEdit";
}
user.setId(id); //Bad
repository.save(user);
return "redirect:/users/" + id;
}
或关闭 DRY 并将 id 放在表单中作为私有字段。 还有其他解决方案吗?
I want to write rest like method for entity update. In this case I retrieve entity id from url and data from request body. The issue is in binding id with bean. Because neither EntityManager nor Spring-Data Crud Repo haven't update(id, bean)
method. So I can set it myself
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public String update(@PathVariable("id") Long id, @Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
user.setId(id); //Very bad
return "usersEdit";
}
user.setId(id); //Bad
repository.save(user);
return "redirect:/users/" + id;
}
or dismiss DRY and put id in forms as private field to.
Is there are any other solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Spring 3.1 中,如果路径变量和模型属性名称相同,并且有一个转换器可以从路径变量值实例化模型属性,则 @ModelAttribute 将从路径变量实例化:
完整示例位于:
https://github.com/rstoyanchev/spring-mvc-31-demo
In Spring 3.1 a @ModelAttribute will be instantiated from a path variable if the path variable and the model attribute names are the same and there is a converter to instantiate the model attribute from the path variable value:
The full example is available at:
https://github.com/rstoyanchev/spring-mvc-31-demo