我搜索有关如何减少Tiles添加的一些样板的想法。以下是我的项目组织方式。
在我的spring-mvc配置中,我通过这种方式配置了Tiles:
...
<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" />
...
我可能从spring config中猜到实际的视图定义位于“/ 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作为“body”(或任何其他属性)并具有相应的名称。
例如,放置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>
答案 0 :(得分:3)
此样板配置是瓷砖挂起1天。引入通配符时,tile-2实际上没有必要,尤其是tile-3和OptionsRenderer。
这是一个可以帮助您的tutorial