使用FreeMarker的相对路径找不到文件

时间:2016-06-13 14:03:09

标签: java html spring spring-mvc freemarker

我有以下文件夹结构

MyApp
  --WEB-INF
      --resources
        --partialFooter.jsp
        --myPartials
          --menu.jsp
      --views
        --index.jsp

和我的index.jsp文件

<#include "../resources/partialFooter.jsp"/>
<#include "../resources/myPartials/menu.jsp"/>

但是在两行中都找不到重新找到的文件。我是否采用正确的路径,我也尝试使用绝对路径但是找不到相同的文件错误。

这就是我创建自由标记视图解析器的方法

@Configuration
@EnableWebMvc
@ComponentScan({"configuracion", "controladores", "seguridad"})
public class ConfigMVC extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/");

    }



@Bean
public FreeMarkerConfigurer freemarkerConfig() {
    FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
    freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/");
    return freeMarkerConfigurer;
}

@Bean
public FreeMarkerViewResolver viewResolver() {

    FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
    viewResolver.setPrefix("");
    viewResolver.setSuffix(".jsp");
    viewResolver.setCache(false);  

    return viewResolver;
}
}

1 个答案:

答案 0 :(得分:0)

您无法退出/WEB-INF/views/目录,因为setTemplateLoaderPath将其设置为根模板目录。因此,您必须使用/WEB-INF/,然后在引用视图模板时,必须使用"/view/"开始其名称。 (虽然更常见的方法是将包含的文件放入视图模板的&#34; lib&#34;子目录中,然后您可以使用视图模板的目录作为根目录。)< / p> 顺便说一下,你可能正在使用过时的FreeMarker版本,因为有一段时间它会在错误信息中解释这一点。