2011-07-08 32 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样式表和主页

这有帮助吗?