У меня такая же проблема, как и у вас.И я попытался включить уровень ведения журнала «DEBUG» для «org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer».Я нашел следующее сообщение:
java.io.FileNotFoundException: ServletContext resource [/WEB-INF/freemarker/] cannot be resolved to URL because it does not exist
at org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:154) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.web.context.support.ServletContextResource.getFile(ServletContextResource.java:169) ~[spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.getTemplateLoaderForPath(FreeMarkerConfigurationFactory.java:351) [spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:304) [spring-context-support-3.1.1.RELEASE.jar:3.1.1.RELEASE]
.....
И проводной журнал от Jetty:
WARN org.eclipse.jetty.util.log - /freemarker/
Я не знаючто происходит! Так что я заменил значение "templateLoaderPath" другим именем, например "/ WEB-INF / tmpl-freemarker /", тогда все работоспособно !!
Далее я попытался использовать ServerContext.getResource () для проверки "/WEB-INF/freemarker/html.ftl".Вот результат:
Resource under /WEB-INF/freemarker/: null
Мой код тестирования:
@Inject
private ServletContext servletContext;
try {
logger.info("Resource under /WEB-INF/freemarker/: {}", servletContext.getResource("/WEB-INF/freemarker/html.ftl"));
} catch(Exception e) {
logger.info("Exception while getResource", e);
}
Кажется, ServletContext не может найти ресурс в разделе "/ WEB-INF/ freemarker / "правильно тоже.Но я не уверен, что объект ServletContext из Spring такой же, как объект в обычной среде сервлета Java.
Я использую FreeMarker 2.3.19, Springframework 3.1.1.RELEASE и jetty-maven-плагин 7.4.5.v20110725 от Maven.