Struts tile to Tiles migration - Spring支持类的更改

时间:2012-05-24 16:33:24

标签: spring upgrade tiles tiles2 apache-tiles

当我尝试在我的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中提供的等效内容重新访问我现有的一些代码?

任何指针都会受到赞赏。

1 个答案:

答案 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>

因此,删除属性就可以了。