【问题标题】:Redirect after post modelAndView not working发布 modelAndView 后重定向不起作用
【发布时间】:2018-12-05 10:06:15
【问题描述】:

我不知道在我的 modelAndView 中发布后如何重定向

@PostMapping("/admin/nuevo_equipo")
public ModelAndView createEntrenador(@Valid Equipo equipo, BindingResult bindingResult) {
    ModelAndView model = new ModelAndView();
    equipoService.save(equipo);
    model.addObject("msg", "entrenador creado con exito");
    model.setViewName("/administrador/nuevo_equipo");
    return model;
}

我该怎么做?

【问题讨论】:

  • 那么您发布的代码有什么问题?它在什么方面不起作用?

标签: spring spring-mvc model-view-controller


【解决方案1】:

正常重定向,如下所示。

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public ModelAndView method() {
    return new ModelAndView("redirect:" + url);
}

通过重定向发送数据(flash 属性数据将在 URL 中不可见):

@RequestMapping(value="/someURL", method=GET)
public String yourMethod(RedirectAttributes redirectAttributes)
{
   ...
   redirectAttributes.addAttribute("rd", "rdValue");
   redirectAttributes.addFlashAttribute("fa", faValue);
   return "redirect:/someOtherURL";
}

正如我从代码中看到的那样,您正在尝试发送数据以及重定向,因此请使用第二种方法。

另见spring-redirectattributes-addattribute-vs-addflashattribute

【讨论】:

    【解决方案2】:

    有几种可能性......在你的情况下,以下将是一个很好的选择

    @PostMapping("/admin/nuevo_equipo")
    public ModelAndView createEntrenador(@Valid Equipo equipo, BindingResult bindingResult, ModelMap model) {
        equipoService.save(equipo);
        model.addAttribute("msg", "entrenador creado con exito");
        return new ModelAndView("redirect:/REDIRECT_URL", model);
    }
    

    重要的是,您的重定向是指向新 URL 的重定向,而不是直接使用新视图进行响应。

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2016-01-10
      • 2013-11-26
      • 2013-03-24
      • 1970-01-01
      • 2013-05-20
      • 2019-06-01
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多