java - Rest 中的更新方法(如 Controller )

标签 java hibernate rest spring-mvc spring-data

我想编写类似于实体更新的方法。在本例中,我从 url 检索实体 ID,从请求正文检索数据。问题在于 id 与 bean 的绑定(bind)。因为 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 作为私有(private)字段放入表单中。 还有其他解决办法吗?

最佳答案

在 Spring 3.1 中,如果路径变量和模型属性名称相同,并且有一个转换器可以从路径变量值实例化模型属性,则 @ModelAttribute 将从路径变量实例化:

@RequestMapping(value="/{account}", method = RequestMethod.PUT)
public String update(@Valid @ModelAttribute Account account, BindingResult result) {
    if (result.hasErrors()) {
        return "accounts/edit";
    }
    this.accountManager.saveOrUpdate(account);
    return "redirect:../accounts";
}

完整示例位于: https://github.com/rstoyanchev/spring-mvc-31-demo

关于java - Rest 中的更新方法(如 Controller ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299463/

相关文章:

java - 在hibernate中,JSP值如何匹配实体类中的变量

javascript - restFixture LET 用于文本/纯文本

java - 实体与值对象

java - 如何使用 Spring RestTemplate POST 表单数据?

java - 使用apache poi将数据库查询结果导出到excel

java - Apache commons base64 解码和 Sun base64 解码

java - 如何在 Java 中将 CamelCase 转换为人类可读的名称?

java - 刷新库存时出错。应用内结算

java - Hibernate - 打开和关闭 SQL 索引的使用

java - Hibernate 的复合键