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 tiles にはこの移行ガイドがあり、この作業に役立ちました。ただし、移行ガイドには記載されていない壁にぶつかったようです。詳細は次のとおりです。

これは、使用していた 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

現在廃止されている tiles.TilesConfigurer とは異なり、 にはメソッドがありませんtiles2.TilesConfigurersetFactoryClass(..)したがって、Bean の初期化が失敗します。

tiles2.TilesConfigurer 私はapiを調べました。これには現在メソッドがsetDefinitionsFactoryClass(..)あり、setPreparerFactoryClass(..). ここでどれが関連しているかを判断できないだけでなく、 に相当するクラスが見つかりませんorg.apache.struts.tiles.xmlDefinition.I18nFactorySet。Tiles 2.2 で直接利用できるこのようなものはありますか、それとも Tiles 2.2 で利用できる同等のものを使用して、既存のコードの一部を再検討する必要がありますか?

任意のポインタをいただければ幸いです。

4

1 に答える 1

0

TilesCommunityの紳士が解決策を提供しました。このスレッドは、ApacheTilesユーザーリストの2012年5月のアーカイブにあります。ここにクロスポストします:

factoryClass org.apache.struts.tiles.xmlDefinition.I18nFactorySetは、Tiles2.2ですぐにサポートされます。したがって、新しい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 に答える