当我尝试在我的Web应用程序中将Spring从2.1版升级到Spring 3.0.x时出现了这种情况。 Spring 3.0.x不支持struts-tiles 1.3,它需要Apache Tiles 2.x.所以,我还必须将Struts-Tiles 1.3升级到Apache Tiles 2.x. Apache tile有这个migration guide帮助我完成这项工作。但是,我似乎已经在移植指南中没有提到这个问题。这里有详细信息:
这是我们正在使用的tilesConfigurer,
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
<property name="factoryClass">
<value>org.apache.struts.tiles.xmlDefinition.I18nFactorySet</value>
</property>
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs.xml</value>
</list>
</property>
</bean>
因为在Spring 3.0.x中不推荐使用类tiles.TilesConfigurer
,所以我将其更改为使用org.springframework.web.servlet.view.tiles2.TilesConfigurer
{tile {1}}与tile.TilesConfigurer不同,tiles2.TilesConfigurer
没有setFactoryClass(..)
方法。因此我的bean初始化失败了。
我查了tiles2.TilesConfigurer
api,现在有setDefinitionsFactoryClass(..)
和setPreparerFactoryClass(..)
方法。我不仅无法确定哪一个与此相关,我找不到org.apache.struts.tiles.xmlDefinition.I18nFactorySet
的等效类。在Tiles 2.2中是否可以直接使用这种类型的东西,或者我是否需要使用Tiles 2.2中提供的等效内容重新访问我现有的一些代码?
任何指针都会受到赞赏。
答案 0 :(得分:0)
来自Tiles社区的一位绅士给出了解决方案。您可以在Apache Tiles用户列表中找到该线程2012年5月归档。交叉发布在这里:
Tiles 2.2中开箱即用支持factoryClass org.apache.struts.tiles.xmlDefinition.I18nFactorySet。因此,我们不需要为新的tiles2.TilesConfigurer类注入任何特殊内容。最终的XML元素将如下所示
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs.xml</value>
</list>
</property>
</bean>
因此,删除属性就可以了。