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」の下にいくつかのサブフォルダーもあります。
一般に、ビューを追加するには、次のことを行う必要があります。
「/WEB-INF/views/{category}/{viewname}.jspx」にあるテンプレートを追加します
次のような新しい定義を追加して、/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>