gpt4 book ai didi

java - Spring Boot保存将学生分配到一个组

转载 作者:行者123 更新时间:2023-11-30 01:58:15 25 4
gpt4 key购买 nike

我的 Spring Boot 简单应用程序有问题。我创建了一本学生日记。我有将学生分配到小组的功能。我在 thymeleaf View 中创建,如下所示:

<form name="myForm" method="post">
<div class="row" id="groupList">
<div class="col-sm">
<div class="form-group blu-margin" th:object="${group}">
<select class="form-control" id="dropGroup">
<option value="0">Wybierz grupę : </option>
<option th:each="group : ${groupList}" th:value="${group.name}" th:text="${group.name}">
</option>
</select>
</div>
</div>
<div class="col-sm">
<div class="form-group blu-margin" th:object="${user}">
<select class="form-control" id="dropGroup">
<option value="0">Wybierz studenta : </option>
<option th:each="user : ${userListNew}" th:value="${user.firstName}" th:text="${user.firstName}+ ' ' +${user.lastName}">
</option>
</select>
</div>
</div>
<div class="col-sm">
<td><input name="submit" type="submit" value="submit" /></td>
</div>
</div>
</form>

我的模型类用户和组:

组:

@OneToMany(mappedBy = "group")
private List<User> users;

用户:

@ManyToOne
private Group group;

这是我的 Controller :

@RequestMapping(value = "/showGroupList", method = RequestMethod.GET)
public String showGroupList(Model model){
List<Group> groupList = groupRepository.findAll();
List<User> userList = userRepository.findAll();
Role userRole = roleRepository.findByName("ROLE_USER");
List<User> userListNew = new ArrayList<>();

for (User user : userList){
if (user.getRoles().contains(userRole)){
userListNew.add(user);
}
}

model.addAttribute("groupList", groupList);
model.addAttribute("userListNew", userListNew);
return "groupList";
}

现在,当我从列表中选择组和用户并单击“提交”时,出现以下错误:

WARN 1132 --- [nio-8070-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]

我做错了什么?

最佳答案

这是您希望在表单中使用的方法的问题。您的错误是:

Request method 'POST' not supported

它清楚地表明您的应用程序不知道如何处理 Post 请求,并且您要求 POST 表单。在表单顶部,您要求 POST http 方法:

<form name="myForm" method="post">

但是在 Controller 层中您只指定 GET http 方法:

method = RequestMethod.GET

您可以通过执行以下两个选项之一来解决此问题:将表单更改为 Get,或在 Controller 中指定发送 POST 请求时要执行的操作。看看您的应用程序,我猜您想首先调用 GET 来获取列表,也许在提交时调用 POST - 但这是您喜欢的设计问题。

为了添加 POST Controller ,也许这样的方法可以工作:

@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity <String> persistGroup(@RequestBody Group group) {
groupRepository.save(group);
return ResponseEntity.status(HttpStatus.CREATED).build();
}

您需要使用您的具体实现进行测试,以查看表单采用什么作为正文(可能不是组)并查看它转到哪个 URI(“/”可能不是正确的 URI)。这个想法是将组或用户保存到各自的存储库中。

关于java - Spring Boot保存将学生分配到一个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com