如何配置Spring和Apache Tiles定义以从classpath解析jsps

时间:2011-07-08 01:12:58

标签: spring jsp classpath tiles spring-webflow

这个不是很短,所以请耐心等待。
我正在开发一个使用Spring 3.0,Apache Tiles 2.2和Spring WebFlow 2.2的Web应用程序。一个重要的要求是它需要非常模块化,这意味着每个应用程序模块将作为单独的Jar文件提供。这可以通过类路径加载资源和配置来完成 我想在这个jar文件中捆绑模块的所有类,bean配置,视图定义,流定义和jsp页面。前两个是微不足道的 对于接下来的2个我找到了解决方案:
流程定义
可以从类路径

加载base-path
<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支持,但这不是我需要的 提前谢谢。

1 个答案:

答案 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">