40 votes

Existe-il des bons tutoriels pour l'utilisation de sitemesh dans un graal application?

Je suis assez expérimenté Graal développeur, mais la plupart de mon expérience a été avec l'aide de graal pour servir JSON/XML pour un flex app et qui est relativement simple des sites web HTML.

J'ai été plongée plus profonde dans l'aide de la sitemesh intégration dans graal et je me bats un peu pour trouver les meilleures pratiques pour certaines configurations plus complexes, et je suis curieux de savoir s'il y a des bons tutoriels ou des exemples. L' original de Sitemesh site web n'est pas très utile que les balises dont il parle ne sont pas directement exposés au graal.

Une recherche google est la plupart du temps montrant la vieille liste de diffusion des messages et de la vanille sitemesh trucs qui m'aide à aller un peu plus loin, mais c'est beaucoup d'essais et d'erreurs.

Je comprends tout à fait comment la base g:layoutTitle, g:layoutHead, et g:layoutBody balises fonctionnent. Ceux-ci sont faciles et bien documenté.

Le genre de choses que j'aimerais voir des exemples de:

  • g:applyLayout - la documentation sur ce sujet est faible et je ne comprends pas tout les utilisations suggérées dans les principaux documents. Comment est-ce différent de celui de définir l' meta name='layout' content='foo' de la propriété?

  • g:pageProperty - certains des meilleurs exemples sur la façon de tirer et utiliser les propriétés dans le template principal en définissant les valeurs comme des balises meta dans la page qui est décoré. Le graal docs sur pageProperty afficher uniquement l'attribut onload du corps mises de l'avant. Je pense que vous pouvez également utiliser la balise meta valeurs ici ainsi, quoi d'autre?

  • pouvez-vous utiliser plusieurs niveaux de sitemesh mises en page? Mes tests semble me font penser que je ne peux pas, mais qui semble réduire la réutilisabilité. Je pense que la réponse ici est un certain usage de la g:applyLayout, mais c'est là où je suis le plus battus.

14voto

Bill James Points 7554

Eh bien, je peux répondre un peu:

Votre première et troisième questions sont liées, comme vous pouvez le pas de la chaîne de modèles à l'aide de la balise meta.

Votre page doit avoir une balise meta comme vous le suggérez, mais si vous voulez couche d'une mise en page sur une autre page, vous mettre un g:applyLayout balise en haut de la présentation des enfants, pointant vers le parent.

Dans votre montage.gsp, vous devez:

<meta name="layout" content="editTemplate" />

et dans editTemplate.gsp, vous devez:

<g:applyLayout name="baseTemplate" >
<!-- the html for the editTemplate -->
</g:applyLayout>

donc l'éditer.gsp serait d'utiliser editTemplate.gsp, qui serait baseTemplate.spg comme une présentation de la base. Vous pouvez la chaîne de ceux que nécessaire.

Je n'ai pas utilisé g:pageProperty à tous, donc je ne peux pas vous jeter des meilleurs exemples là, désolé.

5voto

Sebastian Wramba Points 3128

J'ai trouvé un très bon tutoriel sur l'utilisation de différentes étiquettes. Explique un très commun de l'utilisation de gabarits et la façon de les réaliser dans Graal.

4voto

igor Points 642

Le Sitemesh avec Graal est une très puissante fonctionnalité. Plus je l'utilise plus je l'aime. Vous pouvez décorer n'importe quelle partie de notre site web: vous pouvez avoir la mise en page pour les messages d'erreur, les info-bulles, des nouvelles lignes, commentaires, etc, etc. Juste à noter que vous pouvez faire de même que dans vos pages et de plusieurs niveaux de décoration (pas de <content> nécessaire):

/view/layouts/inline-message d'erreur.spg

<span class="errorMessageInSomeFancyBox">
    <span class="errorIcon"></span>
    <g:layoutBody />
<span>

/vues/livre/créer.spg

<%-- let's decorate our error message with some fancy box --%>
<g:applyLayout name="inline-error-message">${some.error.message}</g:applyLayout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X