Что было бы эквивалентом мастер-страниц в мире веб-разработки на Java? Я слышал о плитках, гобеленах и скорости, но ничего о них не знаю. Они так же просты в использовании, как мастер-страницы?
Мне нужно что-то столь же простое, как настроить один шаблон, и последующие страницы будут производными от шаблона и переопределить области содержимого, как это делают главные страницы.
Любые примеры были бы замечательными !!




Во-первых, эквивалентом ASP.Net на Java будет веб-фреймворк, например, упомянутые вами (Tiles, Tapestry и Velocity).
Главные страницы дают возможность определять страницы с точки зрения содержимого, размещенного в главном шаблоне.
Главные страницы являются функцией ASP.Net (веб-фреймворк .Net), поэтому вам нужна функция, аналогичная мастер-страницам в веб-фреймворке Java.
http://tiles.apache.org/framework/tutorial/basic/pages.html дает несколько базовых примеров использования плиток и JSP для реализации чего-то подобного со Struts, веб-фреймворком Java. В этом случае функциональность мастер-страниц - это надстройка над Struts.
Velocity - это общий шаблонизатор, не специализированный для веб-страниц и определенно более сложный, чем вам нужно. (Я видел, как его использовали для генерации кода.)
Tapestry - это больше полнофункциональный веб-стек, чем Tile, и, вероятно, подходит для ваших целей. Его функции создания шаблонов включают создание компонента и размещение в нем всей общей разметки. Пример находится в http://www.infoq.com/articles/tapestry5-intro.
Специфика этого зависит от того, какой веб-фреймворк Java вы выберете.
Вы также должны проверить Facelets; на DeveloperWorks есть хорошая вводная статья.
Тег Facelets <ui:insert/> сопоставим с тегом ASP.NET <asp:ContentPlaceHolder/>, используемым на главных страницах; он позволяет предоставить содержимое по умолчанию для этой области страницы, но это можно изменить.
Чтобы заполнить шаблон Facelets на другой странице, вы начинаете с элемента <ui:composition/>, который указывает на файл шаблона. Это примерно эквивалентно объявлению атрибута MasterPageFile на странице ASP.NET.
Внутри элемента <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, такие как возможность повторно использовать компоненты страницы с другими данными.
(Отредактировано для получения дополнительной информации.)
Я использовал sitemesh в предыдущих проектах, и его довольно легко настроить. По сути, вы создаете декораторы, которые являются эквивалентами мастер-страниц. Затем вы определяете, какие дочерние страницы какие декораторы использовать. См. введение в sitemesh для получения дополнительной информации.