SpringMVC PUT 请求编辑数据,但得到了一个新数据

问题描述 投票:0回答:1

我正在练习 Spring/Thymeleaf 并面临一个问题 我创建了一个 PUT 请求进行编辑,但它通过创建新数据充当 POST

这是我的代码 控制器

// imports



    @Autowired
    private UniversityService universityService;

    // More codes


    @PutMapping("/universities/{id}/edit")
    public String editUniversity(
            @Valid @ModelAttribute("thisUniversity") University updatedUniversity,
            BindingResult result,
            @PathVariable Long id) {
        if(result.hasErrors()) {
            return "editUniversity";
        }
        universityService.updateUniversity(updatedUniversity);
        return "redirect:/";
    }

服务

// imports

@Service
public class UniversityService {

    @Autowired
    private UniversityRepo universityRepo;

//    Add a university
    public University createUniversity (University newUniversity) {
        return universityRepo.save(newUniversity);
    }


// More codes


    public University updateUniversity(University updatedUniversity) {
        return universityRepo.save(updatedUniversity);
    }

}

HTML

<!DOCTYPE html>
<1-- head -->
  <form th:taction="@{'/universities/'+${thisUniversity.universityId}+'/edit'}" th:object="${thisUniversity}" th:method="POST">
      <!--  The below tag is required for PUT/DELETE request  -->
     <input type="hidden" name="_method" value="PUT">

    // HTML elements

    <input type="submit" value="Save University">
  </form>

我在 application.properties 文件中也有

spring.mvc.hiddenmethod.filter.enabled=true

我已经尝试在表单标签中使用

th:method="PUT"
或不包含
<input type="hidden" name="_method" value="PUT">
但结果还是一样

spring-mvc post thymeleaf httprequest put
1个回答
0
投票

您将 id 作为路径变量,但没有将其提供给更新的对象,这就是为什么它被保存到新对象而不是编辑现有对象。

© www.soinside.com 2019 - 2024. All rights reserved.