2011-07-08 107 views
6

這個不是很短,請耐心等待。
我正在用Spring 3.0,Apache Tiles 2.2和Spring WebFlow 2.2開發Web應用程序。一個重要的要求是它需要非常模塊化,這意味着每個應用程序模塊將作爲單獨的Jar文件提供。這可以通過加載資源並通過類路徑進行配置來完成。
我想在這個jar文件中包含模塊的所有類,bean配置,視圖定義,流定義和jsp頁面。前兩個是微不足道的。
在接下來的2我發現的解決方案:
流定義
鹼基路徑可以從類路徑加載如何配置Spring和Apache Tiles定義來解析類路徑中的jsps

<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> 

唯一剩下的就是解析頁面,最好是t通過類似的東西:

<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支持,但這不是我所需要的。
在此先感謝。

回答

2

我已經得到了一些非常類似於你所描述的東西。我解決了加入「磚-EL」我的pom.xml,然後只是物質的切換「價值」到「表達」對我瓷磚的定義是這樣

<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"> 
+0

expression + tile-el也解決了我的問題。 表達式也可用於templateExpression屬性的模板中:

相關問題