Springboot-JPA-Thymeleaf -Bootstrap.如何在使用Modal表单更新字段后刷新已过滤的表



我有一个用以下控制器代码填充的项目表

@RequestMapping(method = RequestMethod.GET)
public String listProjects(Model model){
model.addAttribute("projects", this.projectService.getProjects());
return "my-projects";
}

我选择一行来显示与项目相关联的作业列表

@RequestMapping (value = "/getAssignmentsByProjectId", method = {RequestMethod.GET})
public String getAssignmentsById(Model model, Long id) {
model.addAttribute("header", "Assignments for Project - " + this.projectService.getProjectNameById(id));
model.addAttribute("assignments", this.assignmentService.getAssignmentsByProjectId(id));
return "project-assignments";
}

然后编辑一行,使用模态表单和一些JS来改变值

@RequestMapping("/getAssignmentById")
@ResponseBody
public Assignment getAssignmentById(Long id) {
Assignment assignment = this.assignmentService.getAssignmentById(id);
return assignment;
}

然后我从模态表单

将更新写回数据库
@RequestMapping("/updateAssignment")
public String getAssignmentById(Long id, Double rate){
this.assignmentService.updateAssignmentById(id,rate);
return "project-assignments";
}

模式关闭,我的赋值列表现在没有行。

我如何刷新分配列表,仍然由相同的投影过滤?

如果我正确理解你的问题,那么你做一个AJAX请求来获取在模态对话框中显示的信息,你使用一个常规的表单POST来实际更新信息。

我猜这段代码:

@RequestMapping("/updateAssignment")
public String getAssignmentById(Long id, Double rate){
this.assignmentService.updateAssignmentById(id,rate);
return "project-assignments";
}

应该这样做:

@PostMapping("/updateAssignment")
public String updateAssignmentById(Long id, Double rate){
this.assignmentService.updateAssignmentById(id,rate);
return "redirect:/getAssignmentsByProjectId?id=" + id;
}

这将在更新后将用户重定向到正确的URL,以显示给定项目id的分配。