Spring:根据视图重定向

时间:2017-12-07 15:01:38

标签: java spring spring-mvc

我有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";

}

我怎么知道哪个视图会触发控制器?

1 个答案:

答案 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,只需在重定向中插入该目标。