Spring Boot 重定向到 /

3

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

在我的控制器中,我有:

    @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 返回 "Error resolving template [/],该模板可能不存在或无法被任何已配置的模板解析器访问"。 请帮忙。谢谢。

使用 return "redirect:" + 你的URL; - kozmo
5个回答

2

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

最初的回答:

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

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

如果想进一步了解重定向和转发的区别,请参考以下内容:

转发(Forward):

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

  2. 客户端不会受到影响,浏览器中的URL保持不变

  3. 请求和响应对象在转发后仍然是同一个对象

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

重定向(Redirect):

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

如果您只想测试重定向而没有MultipartFile,请运行以下代码:@AlanBE

(注:本文中的“转发”和“重定向”均为IT技术中的专业术语,翻译时不作解释。)

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

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

0

重定向如下:

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

0

试试这个。

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

    return "redirect:/ http://yoururl/";

0

我猜你是想要进行转发或重定向。

重定向是针对外部域或服务器的,而转发是在同一服务器内将资源转发到另一个资源以进行进一步处理。

有两个选项可供重定向:

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

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

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

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

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

我只需要重定向到'/'。我该怎么做? - AlanBE
尝试使用“redirect:/”。 - TechFree
请尝试使用已添加的上述代码。测试重定向功能工作良好。@AlanBE - Lahiru Wijesekara
但是你是否将其重定向到另一个域?不需要进行转发吗? - TechFree
如果解决方案有效,请点赞。 - TechFree

0

有不同的方法可以重定向,这里简单尝试一下

@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";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接