ASP.NET Master Pages эквивалент в Java

Что может быть эквивалентом мастер-страниц в мире веб-разработки Java? Я слышал о Tiles, Tapestry и Velocity, но ничего о них не знаю. Они так же просты в использовании, как и мастер-страницы?

Я хочу что-то такое же простое, как настроить один шаблон, и последующие страницы будут производными от шаблона и переопределять области содержимого, как и мастер-страницы

Любые примеры были бы великолепны!

25.08.2008 01:13:04
3 ОТВЕТА
РЕШЕНИЕ

Во-первых, эквивалентом ASP.Net в Java будет веб-фреймворк, такой как те, которые вы упомянули (Tiles, Tapestry и Velocity).

Главные страницы дают возможность определять страницы с точки зрения содержимого, помещенного в основной шаблон.

Главные страницы являются функцией ASP.Net (веб-фреймворк .Net), поэтому вы ищете функцию, похожую на главные страницы в веб-фреймворке Java.

http://tiles.apache.org/framework/tutorial/basic/pages.html приводит несколько основных примеров использования Tiles и JSP для реализации чего-то похожего на Struts, веб-инфраструктуру Java. В этом случае функциональность Master Pages является плагином поверх Struts.

Velocity - это общий шаблонизатор, не специализирующийся на веб-страницах и, безусловно, более сложный, чем вам нужно. (Я видел, как это используется для генерации кода.)

Tapestry - это более полнофункциональный веб-стек, чем Tile, и, вероятно, он подходит для ваших целей. Его шаблонная функциональность включает в себя создание компонента и размещение в нем всей общей разметки. Пример можно найти по адресу http://www.infoq.com/articles/tapestry5-intro .

Специфика этого зависит от того, какую веб-среду Java вы выберете.

4
26.11.2013 05:38:19

Вы также должны проверить Facelets ; есть хорошая вводная статья на DeveloperWorks.

<ui:insert/>Тег Facelets сопоставим с <asp:ContentPlaceHolder/>тегом ASP.NET, используемым на главных страницах; это позволяет вам предоставлять контент по умолчанию для этой области страницы, но это может быть переопределено.

Чтобы заполнить шаблон 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, такие как возможность повторного использования компонентов страницы с различными данными.

(Отредактировано, чтобы предоставить больше информации.)

12
26.11.2013 05:40:40

Я использовал sitemesh в предыдущих проектах, и его довольно легко настроить. По сути, вы создаете декораторы, которые являются эквивалентами главных страниц. Затем вы определяете, какие дочерние страницы используют какие декораторы. Смотрите введение в sitemesh для получения дополнительной информации.

2
26.11.2013 05:30:22