我需要向百里香提出请求但有一些问题 我的控制器
@RequestMapping(value = "/tasks/{project}", method = RequestMethod.GET)
@ResponseBody
public ModelAndView index(@PathVariable Project project) {
ModelAndView modelAndView = new ModelAndView();
List<Task> findAll = taskService.findAll(project);
modelAndView.addObject("findAllTasks", findAll);
final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
modelAndView.addObject("user", userService.findByEmail(currentUser));
modelAndView.setViewName("tasks");
return modelAndView;
}
@RequestMapping(value = "/tasks/{id}", method = RequestMethod.POST)
@ResponseBody
public ModelAndView createNewProject(@Valid Task task, BindingResult bindingResult, @PathVariable ("id") int id ) {
Project project = projectService.findOne(id);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("id", id);
if (bindingResult.hasErrors()) {
modelAndView.setViewName("tasks");
} else {
taskService.create(task, project);
modelAndView.addObject("successMessage", "Task has been added succesfully");
modelAndView.addObject("task", new Task());
modelAndView.setViewName("tasks");
List<Task> findAll = taskService.findAll(project);
modelAndView.addObject("findAllTasks", findAll);
}
return modelAndView;
}
我的HTML
<form autocomplete="off" action="#" th:action="@{'/tasks/' + ${id}}"
th:object="${task}" method="post" class="form-horizontal"
role="form">
<input type="text" id="taskTitle" name="Title" th:placeholder="Title"
class="form-control" />
<input type="text" id="body" name="body" th:placeholder="text"
class="form-control" />
<input type="checkbox" id="public_feedback"
class="form-control" /><label for="public_feedback">Public feedback</label>
<span th:utext="${successMessage}"></span>
<button type="submit" class="add">Add task</button>
</form>
但我的帖子请求是http://localhost:8080/tasks/null。获得请求工作是好的。和硬编码,例如
th:action="@{/tasks/1}"
运作良好,但我需要获取当前项目的路径 我需要通过路径变量得到项目ID,我找不到任何答案。请帮帮我。
答案 0 :(得分:0)
使用action
<form>
中的th:action="@{|/tasks/${task.id}|}"
属性
我相信每个id
task
属性
答案 1 :(得分:0)
你是否在你的html中迭代每个任务?您可以向视图添加任务列表(称为findAllTasks),因此请确保在发布表单时使用正确的对象。否则就没有id。
您可以在视图中放置已存在的任务(带有ID),并在发布表单时使用该ID,或者如果您想使用帖子请求创建新的“任务”,只需删除ID并等待使您的存储库在创建对象时生成一个。