Question

Quel serait l'équivalent des pages maîtres dans le monde du développement Web Java ?J'ai entendu parler de Tiles, Tapestry et Velocity mais je n'y connais rien.Sont-elles aussi faciles à utiliser que les pages maîtres ?

Je veux quelque chose d'aussi simple que de configurer un modèle et que les pages suivantes dérivent du modèle et remplacent les régions de contenu, similaires aux pages maîtres.

Tous les exemples seraient formidables !!

Était-ce utile?

La solution

Premièrement, l'équivalent d'ASP.Net en Java sera un framework web, comme ceux que vous mentionnez (Tiles, Tapestry et Velocity).

Les pages maîtres donnent la possibilité de définir des pages en termes de contenu intégré dans un modèle principal.

Les pages maîtres sont une fonctionnalité d'ASP.Net (le framework Web .Net), vous recherchez donc une fonctionnalité similaire aux pages maîtres dans un framework Web Java.

http://tiles.apache.org/framework/tutorial/basic/pages.html donne quelques exemples de base utilisant Tiles et JSP pour implémenter quelque chose de similaire avec Struts, un framework Web Java.Dans ce cas, la fonctionnalité Master Pages est un plugin au-dessus de Struts.

Velocity est un moteur de création de modèles générique, non spécialisé pour les pages Web et nettement plus compliqué que ce dont vous avez besoin.(Je l'ai vu utilisé pour la génération de code.)

Tapestry est plus une pile Web complète que Tile et convient probablement à vos besoins.Sa fonctionnalité de création de modèles implique la création d'un composant et l'insertion de tous les balises courantes.Un exemple est à http://www.infoq.com/articles/tapestry5-intro.

Les spécificités diffèrent en fonction du framework Web Java que vous choisissez.

Autres conseils

Vous devriez également vérifier Facettes;Il y a un bon article d'introduction sur DeveloperWorks.

Les Facettes <ui:insert/> la balise est comparable à l'ASP.NET <asp:ContentPlaceHolder/> balise utilisée dans les pages maîtres ;il vous permet de fournir un contenu par défaut pour cette zone de la page, mais cela peut être remplacé.

Pour remplir le modèle Facelets dans une autre page, vous commencez par un <ui:composition/> élément qui pointe vers le fichier modèle.Cela équivaut à peu près à déclarer l'attribut MasterPageFile dans une page ASP.NET.

À l'intérieur de <ui:composition/> élément, vous utilisez <ui:define/> éléments pour remplacer les valeurs par défaut du modèle, de la même manière qu'un <asp:Content/> la balise est utilisée.Ces éléments peuvent contenir tout type de contenu, des simples chaînes aux éléments JSF.

Alors, pour tout rassembler...

Dans maître.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 -->

Dans 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>

Et cela donnera ceci :

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

Vous bénéficiez également d'autres avantages avec Facelets, tels que la possibilité de réutiliser des composants de page avec des données différentes.

(Modifié pour fournir plus d'informations.)

j'ai utilisé sitemesh dans des projets précédents et c'est assez facile à mettre en place.Essentiellement, vous créez des décorateurs qui sont des équivalents de pages maîtres.Vous définissez ensuite quelles pages enfants utilisent quels décorateurs.Voir introduction à Sitemesh pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top