spring boot重定向到静态freemarker页面

时间:2016-01-24 09:57:56

标签: spring-boot

spring boot和freemarker项目,在收到表单并进行处理后,想要重定向到静态页面以显示一些信息,例如。 Processed successfully

控制器代码:

@RequestMapping(value="/send",method=RequestMethod.POST)
public String sendApplicationMail(@ModelAttribute("application")Application application, Model model){

        System.out.println(application);
        return "redirect:success";      
    }

success.ftl

中有src/main/resources/templates

但是当我提交表单时,浏览器没有重定向到sucess.ftl,但有以下错误消息:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Jan 24 17:50:39 CST 2016
There was an unexpected error (type=Not Found, status=404).
No message available

但是当我删除redirect:时,只需return "succes",这次就可以了。 然后我试了

return "redirect:success.ftl";
return "redirect:/success.ftl";

两者都有相同的上述错误页面? 那么我怎么能让它正确地重定向到success.ftl

1 个答案:

答案 0 :(得分:1)

如果资源只是一个静态资源,请尝试将该静态资源放在静态资源目录中,如resources/static/htmlstatic.html

使用return "redirect:/htmlstatic.html";return "htmlstatic.html";。不要忘记将.html放在静态页面返回的末尾。

当你只返回success而不是Spring View解析器本身时,解析逻辑视图名称并返回视图。您需要在控制器或方法级别注释中映射此路径。

不需要使用控制器映射静态资源。 DispatcherServlet自动映射静态内容。使用Spring启动,您甚至不必配置它。

您可能还想删除redirect:并让Spring Boot视图解析程序根据您返回的逻辑名称对右视图进行排序。

如果它返回success而不是模板需要模型数据,那么占位符可以被模型中的键值对替换。

当您使用redirect: spring时,会杀死上一个请求以及模型数据。因此,模型数据无法在重定向中存在,并且您会收到错误。

您应该使用 flash属性来传递模型数据,同时重定向或传递一些数据,如用户名作为路径参数,如return "redirect:/sucess/{username}",而不是使用用户名从数据库中再次检索数据。

使用Flash属性非常简单,因此您无需再向数据库发出请求或存储该表单数据的位置。