2011-07-08 30 views
4

我很難與瓷磚。用Apache Tiles包含tile的一部分?

我有一個webapp與許多意見,所有這些都圍繞單一模板組成。該模板具有大約三個或四個「佔位符」,並且對於每個視圖,不同的動態生成的內容應放置在正確的佔位符中。

當我用Tiles定義一個新視圖時,我需要創建多個JSP文件 - 每個文件都有一個佔位符的內容。然後,我需要更新一個巨大的XML文件,其中有很多條目看起來都一樣。

我正在尋找一種解決方案,允許我在同一個文件中聲明所有這些佔位符的內容,並將該文件部分包含到模板中(每個片段佔位符)。

我在看Velocity和FreeMarker,但其中任何一個似乎都沒有部分包含的功能。

我在這裏有什麼選擇?我願意考慮改變框架,以便創建另一種觀點來減少冗長。

謝謝!

+0

對不起,我需要更多的細節。 1.當您談論多個JSP文件時,是否指您的模板佔位符中使用的內容? 2.巨大的XML文件是Tiles配置文件? – fcracker79

回答

0

我相信,爲什麼你的XML文件很大的原因是因爲你可能沒有擴展默認模板如下

這應該是你的基本模板:

<definition name="app.base" template="/WEB-INF/templates/default.jsp"> 
    <put-attribute name="title" value="Not Found" /> 
    <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/tiles/body.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" /> 
    <put-list-attribute name="stylesheets"> 
     <add-attribute value="/static/public/css/bootstrap.min.css" />   
     <add-attribute value="/static/protected/css/header.css" /> 
     <add-attribute value="/static/protected/css/footer.css" /> 
    </put-list-attribute> 
    <put-list-attribute name="javascripts"> 
     <add-attribute value="/static/public/js/jquery-2.1.4.min.js" /> 
     <add-attribute value="/static/public/js/bootstrap.js" /> 
    </put-list-attribute>  
</definition> 

現在你有一個基本的模板,你可以擴展它如下:

<definition name="home" extends="app.base"> 
    <put-attribute name="title" value="Home Page" /> 
    <put-attribute name="body" value="/WEB-INF/tiles/home.jsp" /> 
    <put-list-attribute name="stylesheets" inherit="true"> 
     <add-attribute value="/static/protected/css/whatever.css" /> 
    </put-list-attribute> 
</definition> 

這個新頁面將包括應用用戶羣的兩個CSS樣式表和主頁

這有幫助嗎?