Pergunta

Qual seria o equivalente das páginas mestras no mundo do desenvolvimento web Java?Já ouvi falar de Tiles, Tapestry e Velocity, mas não sei nada sobre eles.Eles são tão fáceis de usar quanto as páginas mestras?

Quero algo tão fácil quanto configurar um modelo e as páginas subsequentes derivarem do modelo e substituirem regiões de conteúdo, semelhante às páginas mestras.

Qualquer exemplo seria ótimo!!

Foi útil?

Solução

Primeiro, o equivalente ao ASP.Net em Java será um framework web, como os que você mencionou (Tiles, Tapestry e Velocity).

As páginas mestras permitem definir páginas em termos de conteúdo inserido em um modelo mestre.

As páginas mestras são um recurso do ASP.Net (a estrutura da web .Net), então você está procurando um recurso semelhante às páginas mestras em uma estrutura da web Java.

http://tiles.apache.org/framework/tutorial/basic/pages.html dá alguns exemplos básicos usando Tiles e JSP para implementar algo semelhante com Struts, um framework web Java.Neste caso, a funcionalidade Master Pages é um plugin no topo do Struts.

Velocity é um mecanismo de modelagem genérico, não especializado para páginas da web e definitivamente mais complicado do que você precisa.(Eu vi isso usado para geração de código.)

Tapestry é mais uma pilha da web completa do que Tile e provavelmente é boa para seus propósitos.Sua funcionalidade de modelagem envolve a criação de um componente e a colocação de todas as marcações comuns nele.Um exemplo está em http://www.infoq.com/articles/tapestry5-intro.

As especificidades disso variam de acordo com a estrutura da web Java que você escolher.

Outras dicas

Você também deve verificar Facetas;existe um bom artigo introdutório no DeveloperWorks.

As Facetas <ui:insert/> tag é comparável ao ASP.NET <asp:ContentPlaceHolder/> tag usada em páginas master;permite fornecer conteúdo padrão para aquela área da página, mas isso pode ser substituído.

Para preencher o modelo Facelets em outra página, você começa com um <ui:composition/> elemento que aponta para o arquivo de modelo.Isso é aproximadamente equivalente a declarar o atributo MasterPageFile em uma página ASP.NET.

Dentro de <ui:composition/> elemento, você usa <ui:define/> elementos para substituir os padrões do modelo, semelhante à forma como um <asp:Content/> etiqueta é usada.Esses elementos podem conter qualquer tipo de conteúdo - desde strings simples até elementos JSF.

Então, para juntar tudo...

Em mestre.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 -->

Em página.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>

E isso será renderizado como:

<!-- HTML header content here -->
Here is some new content
<p>Some new content here too</p>
<!-- HTML footer content here -->

Você também obtém outros benefícios com Facelets, como a capacidade de reutilizar componentes de página com dados diferentes.

(Editado para fornecer mais informações.)

eu usei malha do site em projetos anteriores e é muito fácil de configurar.Essencialmente, você cria decoradores que são equivalentes a páginas mestras.Em seguida, você define quais páginas secundárias usam quais decoradores.Ver introdução ao sitemesh Para maiores informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top