我有2个使用相同控制器的缩进形式(视图A和视图B)。当我做视图A的帖子时,我想要它,将我重定向到网址x,当我发布视图时,B将我重定向到另一个网址(y)。这是否可以在此功能中使用
@RequestMapping(value = "/panics/closeCase", method = RequestMethod.POST)
public String closeCase(@ModelAttribute("closeCaseFrom") CloseCaseFrom closeCaseFrom, Model model) {
CloseCaseFrom sendCloseCaseFrom = new CloseCaseFrom();
sendCloseCaseFrom.setDetail(closeCaseFrom.getDetail());
sendCloseCaseFrom.setIdCasePanic(closeCaseFrom.getIdCasePanic());
sendCloseCaseFrom.setIdPanic(closeCaseFrom.getIdPanic());
sendCloseCaseFrom.setIdCasePanic(closeCaseFrom.getIdCasePanic());
sendCloseCaseFrom.setIdStaff(user.getIdStaff());
sendCloseCaseFrom.setIdUserSession(user.getIdUser());
sendCloseCaseFrom.setSessionToken(user.getToken());
panic.mClosePanicCase(sendCloseCaseFrom);
return "redirect:/alerts";
}
我怎么知道哪个视图会触发控制器?
答案 0 :(得分:1)
您可以在每个视图中添加一个隐藏的输入元素,其名称相同但值不同。然后,您可以在控制器中获取该值,并根据该值重定向。
此输入位于ViewA中
<input type="hidden" name="destination" value="a" />
此输入位于ViewB
中<input type="hidden" name="destination" value="b" />
在你的控制器里
@RequestMapping(value = "/panics/closeCase", method = RequestMethod.POST)
public String closeCase(@RequestParam destination, @ModelAttribute("closeCaseFrom") CloseCaseFrom closeCaseFrom, Model model) {
//..
if (destination.equals("a")) {
// a goes to urlx
return "redirect:/urlx";
if (destination.equals("b")) { // or just else {
// b goes to urly
return "redirect:/urly";
}
或者代替值a或b,您可以将实际目标作为输入字段中的值,并避免使用if,只需在重定向中插入该目标。