Java Web开发世界中的Master Pages是什么?我听说过Tiles,Tapestry和Velocity,但对它们一无所知。它们和母版页一样易于使用吗?

我想要像设置一个模板一样简单,后续页面从模板派生并覆盖内容区域,类似于母版页。

任何例子都会很棒!!

有帮助吗?

解决方案

首先,Java中的ASP.Net等同于Web框架,例如您提到的(Tiles,Tapestry和Velocity)。

母版页可以根据插入主模板的内容定义页面。

母版页是ASP.Net(.Net Web框架)的一项功能,因此您正在寻找与Java Web框架中的母版页类似的功能。

http://tiles.apache.org/framework/tutorial/basic /pages.html 给出了一些使用Tiles和JSP实现类似于Struts(Java Web框架)的基本示例。在这种情况下,Master Pages功能是Struts上的一个插件。

Velocity是一个通用模板引擎,不专门用于网页,绝对比你需要的更复杂。 (我已经看到它用于代码生成。)

Tapestry比Tile更像是一个功能齐全的Web堆栈,可能对您的目的有好处。它的模板功能包括创建一个组件并将所有常见标记放入其中。一个例子是 http://www.infoq.com/articles/tapestry5-intro

具体情况因您选择的Java Web框架而异。

其他提示

您还应该查看 Facelets ; developerWorks上有一篇优秀的介绍性文章

Facelets <ui:insert/>标记与母版页中使用的ASP.NET <asp:ContentPlaceHolder/>标记相当;它允许您为页面的该区域提供默认内容,但这可以被覆盖。

要在另一个页面中填充Facelets模板,请从指向模板文件的<ui:composition/>元素开始。这大致相当于在ASP.NET页面中声明MasterPageFile属性。

<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获得一些其他好处,例如能够使用不同数据重用页面组件。

(编辑提供更多信息。)

我在以前的项目中使用了 sitemesh ,这很容易设置。基本上,您创建与主页等效的装饰器。然后,您可以定义哪些子页面使用哪些装饰器。有关详细信息,请参见 sitemesh简介。 / p>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top