【问题标题】:Spring Boot Redirect to / [duplicate]Spring Boot重定向到/ [重复]
【发布时间】:2019-10-22 13:58:38
【问题描述】:

我想将用户重定向到“/”页面。

在我的控制器中,我有:

    @RequestMapping(value = "/uploadImage", method = {RequestMethod.POST})
    public ModelAndView addUser (@RequestParam(value="file") MultipartFile file,
            HttpServletRequest request,
            ModelMap model) {
    ...
    if (...) { 
            model.addAttribute("uploadFileError", true);
            return new ModelAndView("/", model);
    } 
    return new ModelAndView("/", model);

在我的接收页面中:

    @RequestMapping(value = "/")
    public String root(Model model, HttpServletRequest request) {
    ...
    return "index";
    }

但 Spring 返回“错误解析模板 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问”

请帮忙。谢谢。

【问题讨论】:

  • 使用return "redirect:"+ YOU_URL;

标签: java spring-boot


【解决方案1】:

根据给出的解释,您似乎需要重定向到同一服务器中的其他控制器。下面的代码将适合您管理。

@RequestMapping(value = "/uploadImage", method = { RequestMethod.POST })
    public ModelAndView addUser(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request,
            ModelMap model) {

        return new ModelAndView("redirect:/", model);
    } 

为了进一步阅读,您可以参考以下重定向和转发的区别

转发:

  1. 请求会在服务器端做进一步处理

  2. 客户端不受转发的影响,浏览器中的 URL 保持 一样的

  3. 请求和响应对象在之后将保持相同的对象 转发。

  4. 请求范围的对象仍然可用

重定向:

  1. 请求被重定向到不同的资源
  2. 客户端会在重定向后看到 URL 的变化
  3. 创建了一个新请求
  4. 重定向通常在 Post/Redirect/Get web 开发中使用 模式

如果您只是想在没有 MultipartFile @AlanBE 的情况下测试下面运行的重定向

@RequestMapping(value = "/uploadImage", method = { RequestMethod.POST })
    public ModelAndView addUser(/* @RequestParam(value = "file") MultipartFile file, */ HttpServletRequest request,
            ModelMap model) {

        return new ModelAndView("redirect:/", model);
    }

【讨论】:

    【解决方案2】:

    重定向如下:

    @RequestMapping(value = "/uploadImage", method = {RequestMethod.POST})
        public void addUser (@RequestParam(value="file") MultipartFile file,
                HttpServletRequest request,HttpServletResponse response
                ModelMap model) {
        ...
    response.sendRedirect("/");
    

    【讨论】:

      【解决方案3】:

      试试这个。

      @RequestMapping(value = "/uploadImage", method = {RequestMethod.POST})
          public ModelAndView addUser (@RequestParam(value="file") MultipartFile file,
                  HttpServletRequest request,
                  ModelMap model) {
          ...
      
          return "redirect:/ http://yoururl/";
      

      【讨论】:

        【解决方案4】:

        我怀疑您是要转发还是重定向。 重定向用于外部域或服务器,而在同一服务器内转发到另一个资源以进行进一步处理。

        重定向有两种选择:

         return new ModelAndView("redirect:/redirectedUrl", model);
        

        这里,redirectedUrl 是相对于服务器上下文的。在您的情况下,它似乎是“/”。

        但它可以是完整/完整的 HTTP URL,例如:http://localhost:8080/newDomain/s...

        如果转发是您真正想要的,请尝试:

         return new ModelAndView("redirect:/redirectedUrl", model);
        

        【讨论】:

        • 我只需要重定向到'/'。我该怎么做?
        • 尝试“重定向:/”。
        • 试试上面添加的代码。测试对重定向效果很好。 @AlanBE
        • 但是您是在重定向到另一个域吗?不想要前锋?
        • 请对解决方案进行投票
        【解决方案5】:

        这里有不同的重定向方式,试试这个很简单

        @RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
        public ModelAndView addUser (@RequestParam(value="file")MultipartFile file, HttpServletRequest request,
                ModelMap model) {
               ...
        return new ModelAndView( "redirect:/index",model);
        
        }
        

        接收页面喜欢

          @RequestMapping(value = "/index", method=RequestMethod.GET)
        public String root(Model model, HttpServletRequest request) {
        ...
        return "index";
        }
        

        【讨论】:

          猜你喜欢
          • 2016-11-06
          • 1970-01-01
          • 2020-04-15
          • 2014-12-26
          • 1970-01-01
          • 2017-11-25
          • 1970-01-01
          • 2015-11-20
          • 2019-02-21
          相关资源
          最近更新 更多