Spring Boot 无法解析 Freemarker 视图

问题描述 投票:0回答:5

我第一次尝试使用 Spring Boot 来显示 Freemarker 视图,目前在浏览器中出现以下错误:

白标错误页面

此应用程序没有 /error 的显式映射,因此您会看到 这是后备措施。

Sun Feb 19 17:59:07 GMT 2017 出现意外错误(类型=Not 已找到,状态=404)。没有留言

我正在使用 Spring Boot 1.5。

我的文件结构:

enter image description here

登录控制器

package com.crm.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.crm.service.LoginService;

@Controller
public class LoginController {

    @Autowired
    private LoginService loginService;

    @RequestMapping("/login")
    public String authenticate() {
        return "loginPage";
    }
}

应用程序.属性

spring.freemarker.template-loader-path: /
spring.freemarker.suffix: .ftl

服务器

package com.crm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Server{

    public static void main(String[] args) {
        SpringApplication.run(Server.class, args);
    }
}

为什么Spring无法解析loginPage.ftl视图?为什么我在网络浏览器中看不到它?

java spring spring-mvc spring-boot freemarker
5个回答
22
投票

Spring Boot 最近再次引入了一项重大更改,这导致了臭名昭著的

whitelabel error
页面。他们将默认后缀从
.ftl
更改为
.ftlh

https://github.com/spring-projects/spring-boot/issues/15131

因此对于 Spring Boot 2.2.x 应用程序,这些扩展必须更新。


5
投票

使用 Spring Boot 1.5.1,您不需要将这些属性添加到 application.properties 文件中,由于自动配置,它们已经定义了。

删除这 2 个属性,它应该与 pom.xml 中的以下依赖项一起使用:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

可以在此处找到文档:http://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-template-engines


3
投票

application.properties
内的freemarker模板目录设置是错误的。应该是:

spring.freemarker.template-loader-path=classpath:/templates/

3
投票
当我从控制器方法将模板名称作为构造函数参数返回到 ModelAndView 对象(而不仅仅是字符串)时,它开始为我工作。不知道为什么,但我没有时间弄清楚,正在寻找快速解决方案。如果有人愿意解释,请做。

带有 Freemarker 的 Spring boot 2.0.2.RELEASE。这是application.properties的内容:

spring.freemarker.enabled=true spring.freemarker.template-loader-path=classpath:/templates
    

0
投票

ftl

 文件更改为 
ftlh
 即可。

© www.soinside.com 2019 - 2024. All rights reserved.