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

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

任何例子都会很棒!!

===============>>#1 票数:12

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

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

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

<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 已采纳

首先,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框架而异。

===============>>#3 票数:2

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

  ask by Todd translate from so

未解决问题?本站智能推荐:

2回复

无法在ASP.NET MVC母版页中生成自定义路径

我正在ASP.NET MasterPage中工作,并且遇到<link href="..." /> 。 我正在尝试用特定名称替换样式表: 不幸的是,这创建了HTML输出: 这显然不是预期的。 如果我将相同的代码放在View占位符中,它会完美地工作。 尽管这
1回复

在asp.net中使用site.master加载订单/脚本访问

这在很大程度上是关于负载排序的一个基本问题,但是在阅读了文档之后,我只是想获得一些输入以进一步确认这一点。 根据此处的MSDN,site.master加载事件将在内容页面的加载事件之后触发。 我正在工作的网站的site.master标头中有一些方法,可以在内容页面上调整控件的大小。
3回复

如何在ASP.NET 3.5 MVC应用程序中将菜单项动态添加到母版页

我想根据成员身份安全性登录角色向我的主页动态添加菜单项。 从我在html母版页中阅读过的RenderAction也许可以做到这一点。 由于我一直在摸索,因此我不确定它的外观以及在控制器中如何检查当前角色。 我正在考虑创建一个表并将允许的菜单项与角色关系相关联,以便可以传递到母版页以呈现动态
1回复

多个网站的通用MVC _layout页面(母版页)

是否可以在MVC中为多个网站使用通用布局页面? 我必须使用一个布局页面,并且我需要创建网站的多个解决方案并在所有其他网站中使用相同的布局页面
1回复

MVC和WebForms的母版页中的ViewData

在我的站点中,对于MVC视图和WebForm页面,我具有相同的MasterPage。 我想在后面的MasterPage代码中使用ViewData。 我有一个例外: ViewMasterPage仅可用于从ViewPage或ViewPage派生的内容页面。 {
2回复

从数据库为MVC App动态加载母版页

这是方案。 我希望能够根据客户(存储为子域)对网站进行私人标记。 现在,当客户注册时,我们将在数据库中设计/存储私有标签。 我希望将私有标签存储为每个客户的母版页文件,并从数据库中快速加载它。 根据我一直在搜索的内容,似乎不可能。 我看到可以设置ViewPage.MasterPag
4回复

MVC中的“母版页”逻辑应该放在哪里?

我正在尝试使用MVC,我的问题是 - 我在使用WebForms的Master Pages中有Page_Load逻辑,它应该放在MVC中? 这是商业案例: 不同的主机标题应该导致不同的页面标题显示在网站的(一个)母版页上,因此显示所有页面。 例如,如果主机头是hello.mydoma
2回复

Java母版页-JDK 1.6

我正在使用Google App Engine在Eclipse Helios中构建网站,并希望实现类似ASP.NET母版页的功能,以便跨不同页面使用通用代码。 Java中有类似的东西吗? 更新:我不是Java开发人员,查看发布的答案中的链接后,我认为Facelets和Tiles Frame
4回复

使用CSS的Java Servlet的某种母版页

我正在使用Netbeans和servlet创建一个Web应用程序。 我在页面中使用了一些CSS。 有没有一种方法可以将每个servlet将具有的横幅和菜单放在一个地方,所以我不需要在每个servlet中都重写它? 谢谢
4回复

asp.net主页,内容页面

我有一个包含三个部分的母版页,左窗格+ 2个右窗格(一个顶部标题和一个主屏幕区域) 我想让主屏幕区域基于从顶部标题窗格中单击的链接动态填充URL。 所以在标题中,如果我有三个链接-假设我有三个页面(one.aspx,two.aspx,three.aspx),并且我想单击母版标题窗格中