我尝试将Freemarker模板集成到Spring mvc应用程序中。我试过它作为教程中的节目。这是代码, 我正在使用freemarker 2.3.15
<!-- freemarker config -->
<beans:bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<beans:property name="templateLoaderPath" value="/WEB-INF/views/"/>
</beans:bean>
<!--
View resolvers can also be configured with ResourceBundles or XML files. If you need
different view resolving based on Locale, you have to use the resource bundle resolver.
-->
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<beans:property name="cache" value="true"/>
<beans:property name="prefix" value="/WEB-INF/views/"/>
<beans:property name="suffix" value=".ftl"/>
</beans:bean>
它会导致错误:
1. Build path is incomplete. Cannot find class file for org/springframework/ui/freemarker/
FreeMarkerConfigurationFactory
2.No setter found for property 'templateLoaderPath' in class
'org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer' [config set: Warehouse/web-context]
答案 0 :(得分:10)
将spring-context-support
依赖项添加到项目中。
在pom.xml中,
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
参考:ClassNotFoundException with Freemarker
和
答案 1 :(得分:0)
几年后,我在这里遇到了这个问题。我在网络上找不到任何解决方案。我不知道FreeMarker或Spring库是否已更改或发生了什么。我终于找到了可行的解决方案。
我有以下代码:
@Autowired
private FreeMarkerConfigurationFactoryBean freeMarkerConfigFactory;
当将此jar包含在另一个项目中时,该项目可能突然不再解决此依赖关系。我正在从事的新项目实际上不需要FreeMarker,但是我需要让Spring来解决依赖关系,以便我的程序可以运行。
我注释了以上两行,而是添加了以下内容:
private FreeMarkerConfigurationFactoryBean freeMarkerConfigFactory = new FreeMarkerConfigurationFactoryBean();
这允许我的程序运行,因为Spring不需要自动装配该bean。
为什么不知道为什么它在工作了多年后就停止工作了?另外,我没有测试上面的代码,因为同样,我不需要FreeMarker。我只需要自动布线即可。
也许这将对其他人有所帮助(或者当我五年后再次寻找该解决方案时对我有帮助。因为我已经解决了一次,但是没有将其记录在自述文件中。我必须在代码。)