我使用Spring Initilizr创建了一个Spring Boot应用程序。然后,我在项目中包含了Apache的Freemarker模板引擎,以加载模板。该引擎默认从“src/main/resources/templates/
”文件夹中加载模板。
我正在尝试在用户访问网页“http://localhost:8080
”时作为模板加载一个简单的index.ftl
文件。但我需要从“src/main/webapp/
”文件夹加载模板。每当我尝试从resources
文件夹之外加载模板时,模板引擎无法找到模板。
我查阅了各种教程和Stack Overflow的问题。没有一个回答我的问题,而我因为引擎无法找到文件而陷入了404错误
中。
文件结构如下:
|-src
|---main
|-----java
|-------MainApplication.java
|-------controllers
|---------ViewController.java
|-----resources
|-------static
|-------templates
|-------application.properties
|-----webapp
|-------index.ftl
经过大量查找,我发现一篇文章建议更改模板引擎搜索文件的位置。它建议在application.properties中添加以下几行:
spring.freemarker.enabled=true
spring.freemarker.template-loader-path=classpath:src/main/webapp/
这似乎完全不起作用。
当我访问网页http://localhost:8080时,我试图解决简单的索引页面。 我编写了以下代码来映射ViewController.java
中的HTTP请求:
@RequestMapping("/")
public ModelAndView home(Model model)
{
return new ModelAndView("index");
}
我不确定是否完全理解正确或者是否遗漏了某些配置。
src
)几乎从来都不是正确的选择(考虑到您只部署jar
、war
或ear
,它们都不包含源代码)。由于文件位于servlet上下文中,因此您应该将/
作为模板加载器路径(通常意味着servlet上下文资源,而不是类路径资源)。 - ddekanywebapps
文件夹呢?虽然这很傻,但真的让我头疼。 - Shivam Naikfile://
前缀/协议spring.mvc.static-path-pattern=
,请参见https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html。 - user7294900