0

当我尝试在我的 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 有这个迁移指南,帮助我完成了这项工作。但是,我似乎遇到了迁移指南中未提及的问题。以下是详细信息:

这是我们使用的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>

由于该类tiles.TilesConfigurer在 Spring 3.0.x 中已弃用,因此我将其更改为使用org.springframework.web.servlet.view.tiles2.TilesConfigurer

tiles2.TilesConfigurer没有setFactoryClass(..)与现在已弃用的 tiles.TilesConfigurer 不同的方法。因此我的 bean 初始化失败。

我查找了tiles2.TilesConfigurer api,它现在具有方法,setDefinitionsFactoryClass(..)并且setPreparerFactoryClass(..). 我不仅无法确定哪个是相关的,我也找不到等效的org.apache.struts.tiles.xmlDefinition.I18nFactorySet. Tiles 2.2 中是否有这种直接可用的东西,或者我是否需要使用 Tiles 2.2 中可用的等效代码重新访问我现有的一些代码?

任何指针将不胜感激。

4

1 回答 1

0

Tiles Community 的一位绅士给出了解决方案。您可以在 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>

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

于 2012-05-25T16:48:27.007 回答