<bean id="beansWrapper" class="freemarker.ext.beans.BeansWrapper">
<property name="exposeFields" value="true" />
</bean>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freema rker.FreeMarkerConfigurer">
<property name="objectWrapper">
<ref local="beansWrapper" />
</property>
<property name="templateLoaderPath">
<value>/WEB-INF/views/</value>
</property>
</bean>
这不起作用,我得到一个例外:
org.springframework.beans.NotWritablePropertyException:bean 类 [org.springframework.web.servlet.view.freemarker.Fr eeMarkerConfigurer] 的无效属性“objectWrapper”:Bean 属性“objectWrapper”不可写或设置方法无效。setter 的参数类型是否与 getter 的返回类型匹配?
setObjectWrapper 需要一个 ObjectWrapper 的实例,我以为我在这个配置中传递了一个。
根据回复的建议(在编辑我的问题时我看不到,很抱歉没有注明出处),我尝试了这个:
<bean id="beansWrapper" class="freemarker.ext.beans.BeansWrapper">
<property name="exposeFields" value="true" />
</bean>
<bean id="freemarkerAppConfig" class="freemarker.template.Configuration">
<property name="objectWrapper">
<ref local="beansWrapper"/>
</property>
</bean>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="configuration">
<ref local="freemarkerAppConfig" />
</property>
<property name="templateLoaderPath">
<value>/WEB-INF/views/</value>
</property>
</bean>
但这仍然行不通。如果我没记错的话,通过调用 setConfiguration,FreeMarkerConfigurer 的所有其他属性都会被提供的配置覆盖。
不幸的是,我看不到一种轻松设置模板加载路径的方法,因为配置 bean 需要一个 Dir 对象,而不是字符串。