假设我在以下网址显示id = 1的学术群组的时间表:http://localhost:8222/schedule?groupId=1
。
在此页面,我有按钮,用于删除日程表中的特定课程。 JSP中按钮的action
属性具有以下值:"schedule?${pageContext.request.queryString}/delete/${lessons[count].id}"
,因此单击课程附近“id = 1”的“删除”按钮会导致重定向到此URL:http://localhost:8222/schedule?groupId=1/delete/1
。
我想要做的是创建一个映射到此URL的方法,该方法执行删除并重定向到包含当前所选组的计划的页面:http://localhost:8222/schedule?groupId=1
。这是我试图做的事情:
@RequestMapping(value = "/schedule?groupId={groupId}/delete/{lessonId}")
public String deleteLesson(@PathVariable("lessonId") Integer lessonId, @PathVariable("groupId") Integer groupId) {
lessonRepository.delete(lessonId);
return "redirect:/schedule?groupId=" + groupId;
}
但是这不起作用,从不调用此方法。如何正确地编写此方法以实现我想要实现的目标?
答案 0 :(得分:3)
使用此groupId
?groupId
之后,groupId
成为参数,网址的后半部分成为其值。因此,如果您不想更改现有的URL模式,请求处理方法应如下所示:
@RequestMapping(value = "/schedule")
public String deleteLesson(@RequestParam("groupId") String restOfTheUrl) {
log.info(restOfTheUrl);
// your code
}
记录后,您应该看到,例如:
1/delete/2
现在您必须解析它以便删除groupId
和课程id
。
但是如果你想以自己的方式处理它,你的代码应该是:
@RequestMapping(value = "/schedule/groupId/{groupId}/delete/{lessonId}") // convert you request param to path varriable
public String deleteLesson(@PathVariable("lessonId") Integer lessonId, @PathVariable("groupId") Integer groupId) {
lessonRepository.delete(lessonId);
return "redirect:/schedule?groupId=" + groupId;
}
了解更多信息: