据我了解,Spring默认情况下会在resources
文件夹中查找文件。我正在尝试返回一个简单的index.ftl
文件,如下所示:
@RequestMapping(method = RequestMethod.GET, value = "/")
public String index(Model model) {
model.addAttribute("message", "Hello world!");
return "index";
}
我已经这样配置了Freemarker:
@Bean
public FreeMarkerViewResolver freeMarkerViewResolver() {
FreeMarkerViewResolver vr = new FreeMarkerViewResolver();
vr.setPrefix("");
vr.setSuffix(".ftl");
vr.setCache(true);
return vr;
}
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("templates/");
return configurer;
}
我有index.ftl
位于两个位置,一个位于resources/templates/index.ftl
中,一个位于webapp/templates/index.ftl
中。每个对象都有内容,让我知道要获取哪个,而Spring总是返回webapp
。我没有看到设置任何配置来执行此操作,实际上,通过将以下内容放在webapp
中,已显式配置它以使其不在application.properties
中显示:
spring.mvc.static-path-pattern=/resources/**
我不确定还有什么要更改的,甚至不确定该如何停止。 Spring自己的文档说它将默认为resources
,并且默认情况下不会搜索webapp
文件夹,因此我不确定在此项目中可能在何处配置了该文件或如何停止这个。任何帮助表示赞赏。
编辑:当完全删除webapp
文件夹,而仅将index.ftl
留在resources
内时,出现以下错误:
`无法在名称为'dispatcherServlet'的servlet中解析名称为'index'的视图
这是我的初始化程序类:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { WebMvcConfig.class, WebFlowWithMvcConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}