1

Tiles によって追加されたボイラープレートの一部を削減する方法についてのアイデアを探しています。これが私のプロジェクトの編成方法です。

私の spring-mvc 設定では、タイルを次のように設定しています。

...

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/layouts/layouts.xml</value>
            <!-- Scan views directory for Tiles configurations -->
            <value>/WEB-INF/views/**/views.xml</value>
        </list>
    </property>
</bean>

...

/WEB-INF/layouts/layouts.xml で定義されている私が使用するメイン レイアウト:

...

<definition name="default" template="/WEB-INF/layouts/default.jspx">
    <put-attribute name="header" value="/WEB-INF/views/general/header.jspx" />
    <put-attribute name="footer" value="/WEB-INF/views/general/footer.jspx" />
</definition>

...

... 使用されるテンプレート (/WEB-INF/layouts/default.jspx) は次のようになります。

...

<tiles:insertAttribute name="header" ignore="true" />
    <div id="main">
        <tiles:insertAttribute name="body" />
    </div>
<tiles:insertAttribute name="footer" ignore="true" />

...

春の設定から推測できるように、実際のビュー定義は「/WEB-INF/views」にあります

ビューを整理するために、「/WEB-INF/views」の下にいくつかのサブフォルダーもあります。

一般に、ビューを追加するには、次のことを行う必要があります。

  1. 「/WEB-INF/views/{category}/{viewname}.jspx」にあるテンプレートを追加します

  2. 次のような新しい定義を追加して、/WEB-INF/views/{category}/views.xml を更新します。

    ...
    
    <definition extends="default" name="{category}/{viewname}">
        <put-attribute name="body" value="/WEB-INF/views/{category}/{viewname}.jspx"/>
    </definition>
    

ご覧のとおり、ほとんどの定義に入れている唯一の属性は「body」であり、その値はテンプレートの場所とビュー名と相関しています。

時間が経つにつれて、これらのビューをリファクタリング/維持することが難しくなるため、それらを定義するための何らかの単純化を探しています。

私の質問は次のように聞こえます: テンプレート名/場所に基づいてタイルにビュー定義を検出させることは可能ですか? 定義では、関連する jspx を「本体」(またはその他の属性) として使用し、対応する名前を付ける必要があります。

たとえば、jsps を配置する場合: /WEB-INF/views/general/login.jspx

このようなものは、タイルによって自動的に定義される必要があります。

<tiles-definitions>

    ...

    <definition extends="default" name="general/login">
        <put-attribute name="body" value="/WEB-INF/views/general/login.jspx"/>
    </definition>

</tiles-definitions>
4

1 に答える 1

3

このボイラープレート構成は tiles-1 日からのハングアップです。ワイルドカードが導入されたときの tiles-2 では必要ありません。特に、OptionsRenderer と一緒の tiles-3 では必要ありません。

ここにあなたを助けるチュートリアルがあります

  • 春からタイルへの統合、
  • ワイルドカードを使用した定義、
  • OptionsRenderer を使用してフォールバック パターンを実装し、
  • 定義構成。
于 2013-05-27T07:33:26.450 に答える