代码之家  ›  专栏  ›  技术社区  ›  Todd

ASP.NET母版页在Java中的等效版本

  •  6
  • Todd  · 技术社区  · 18 年前

    在Java web开发世界中,母版页的等价物是什么?我听说过瓷砖、挂毯和Velocity,但对它们一无所知。它们是否像母版页一样易于使用?

    我想做一些简单的事情,比如设置一个模板,后续页面从模板派生并覆盖内容区域,类似于母版页。

    任何例子都很好!!

    3 回复  |  直到 18 年前
        1
  •  12
  •   Afshin Moazami Darxis    12 年前

    你也应该退房 Facelets good introductory article 在DeveloperWorks上。

    <ui:insert/> 标记可与ASP.NET进行比较 <asp:ContentPlaceHolder/>

    要在另一个页面中填充Facelets模板,请从 <ui:composition/>

    <用户界面:组合/> 元素,您使用 <ui:define/> 元素来替代模板默认值,类似于 <asp:Content/> 使用标签。这些元素可以包含任何类型的内容——从简单字符串到JSF元素。

    所以,把这一切结合起来。。。

    在里面 master.xhtml :

    <!-- HTML header content here -->
    <ui:insert name="AreaOne">Default content for AreaOne</ui:insert>
    <ui:insert name="AreaTwo">Default content for AreaTwo</ui:insert>
    <!-- HTML footer content here -->
    

    在里面 page.xhtml

    <ui:composition template="/WEB-INF/templates/master.xhtml">
      <ui:define name="AreaOne">Here is some new content</ui:define>
      <ui:define name="AreaTwo">
        <p>Some new content here too</p>
      </ui:define>
    </ui:composition>
    

    这将呈现为:

    <!-- HTML header content here -->
    Here is some new content
    <p>Some new content here too</p>
    <!-- HTML footer content here -->
    

    使用Facelets还可以获得其他一些好处,例如能够使用不同的数据重用页面组件。

        2
  •  4
  •   Afshin Moazami Darxis    12 年前

    首先,Java中ASP.Net的等价物将是一个web框架,如您提到的(Tiles、Tapestry和Velocity)。

    母版页能够根据主模板中的内容定义页面。

    http://tiles.apache.org/framework/tutorial/basic/pages.html 给出了一些使用Tiles和JSP实现类似于Java web框架Struts的基本示例。在本例中,母版页功能是Struts之上的插件。

    Velocity是一个通用的模板引擎,不专门用于web页面,而且肯定比您需要的更复杂。(我见过它用于代码生成。)

    http://www.infoq.com/articles/tapestry5-intro .

        3
  •  2
  •   tshepang Arrie    12 年前

    sitemesh 在以前的项目中,它非常容易设置。本质上,您创建的装饰器相当于母版页。然后定义哪些子页面使用哪些装饰器。看见 introduction to sitemesh 了解更多信息。