这个不是很短,所以请耐心等待。
我正在开发一个使用Spring 3.0,Apache Tiles 2.2和Spring WebFlow 2.2的Web应用程序。一个重要的要求是它需要非常模块化,这意味着每个应用程序模块将作为单独的Jar文件提供。这可以通过类路径加载资源和配置来完成
我想在这个jar文件中捆绑模块的所有类,bean配置,视图定义,流定义和jsp页面。前两个是微不足道的
对于接下来的2个我找到了解决方案:
流程定义
可以从类路径
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="classpath:/org/example/webflow/samples">
<webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>
查看定义
TilesConfigurer也可以通过类路径加载
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>classpath:/org/example/**/tiles/tile-views.xml</value>
</list>
</property>
</bean>
唯一剩下的就是解析页面,最好是通过以下方式解决:
<definition name="myPage" extends="main">
<put-attribute name="header" value="classpath:/org/example/pages/headers/view_events.jsp" />
<put-attribute name="siteContent" value="classpath:/org/example/pages/admin/view_events.jsp" />
<put-attribute name="footer" value="classpath:/org/example/pages/blank.jsp" />
</definition>
有没有办法达到预期的效果?我通过搜索获得的最接近的是Apache Tiles通配符支持和EL支持,但这不是我需要的 提前谢谢。
答案 0 :(得分:2)
我有一些与你描述的非常相似的东西。我解决了将“tiles-el”添加到我的pom.xml中的问题,然后只需将我的tile定义中的“value”切换为“expression”就像这样
<definition name="mypage" extends="main">
<put-attribute name="header" expression="${header}"/>
你甚至可以在表达式上使用简单的条件来玩这个
<put-attribute name="header" expression="/WEB-INF/layouts/${bean.field ? 'path1/' : 'path2/'}header.jsp">