ASP.NET Master Pages等效于Java

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

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

任何例子都会很棒!!

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

母版页提供了根据插入主模板的内容定义页面的function。

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

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

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

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

具体细节因您选择的Java Web框架而异。

您还应该查看Facelets ; developerWorks上有一篇很好的介绍性文章 。

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

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

元素中,使用元素覆盖模板默认值,类似于使用标记的方式。 这些元素可以包含任何类型的内容 – 从简单的字符串到JSF元素。

所以,把它们放在一起……

master.xhtml中

  Default content for AreaOne Default content for AreaTwo  

page.xhtml中

  Here is some new content  

Some new content here too

这将呈现为:

  Here is some new content 

Some new content here too

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

(编辑提供更多信息。)

我在之前的项目中使用过sitemesh ,设置非常简单。 基本上,您创建与主页等效的装饰器。 然后,您可以定义哪些子页面使用哪些装饰器。 有关详细信息,请参阅sitemesh简介 。