使用 Apache Tiles 包含部分磁贴?

Posted

技术标签:

【中文标题】使用 Apache Tiles 包含部分磁贴?【英文标题】:Include part of tile with Apache Tiles? 【发布时间】:2011-10-01 10:36:58 【问题描述】:

我在使用 Tiles 时遇到了困难。

我有一个包含许多视图的 web 应用程序,所有这些都围绕一个模板组成。模板有大约三四个“占位符”,对于每个视图,不同的、动态生成的内容应该放在正确的占位符中。

当我用 Tiles 定义一个新视图时,我需要创建多个 JSP 文件 - 每个都有一个占位符的内容。然后我需要更新一个巨大的 XML 文件,其中有很多看起来完全一样的条目。

我正在寻找一种解决方案,它允许我在同一个文件中声明所有这些占位符的内容,并将该文件部分包含到模板中(每个片段都包含在其占位符中)。

我也在研究 Velocity 和 FreeMarker,但其中任何一个似乎都没有部分包含功能。

我在这里有什么选择?我愿意考虑改变框架,以减少创建另一个视图的繁琐。

谢谢!

【问题讨论】:

抱歉,我需要更多详细信息。 1、你说的多个JSP文件,是指你的模板占位符中要使用的内容吗? 2.巨大的XML文件是Tiles配置文件? 【参考方案1】:

我认为你的 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 样式表

这有帮助吗?

【讨论】:

以上是关于使用 Apache Tiles 包含部分磁贴?的主要内容,如果未能解决你的问题,请参考以下文章

全新 Tiles API: 与您的智能手表用户分享磁贴

以 XYZ 格式提供 GeoServer Tiles

org.apache.tiles.util.TilesIOException:包含路径'/login.jsp'的JSPException

为所有用户激活的凭据提供程序 V2(磁贴)

第6章—渲染web视图—使用Apache Tiles视图定义布局

使用 Apache Tiles 3 构建页面布局