Lors de l'utilisation de <ui:composition> template, où dois-je déclarer le <f:métadonnées>?
J'ai fait beaucoup de progrès dans la conversion de mes applications JSF réserver-marquables pages, mais je me demande si je suis en train de faire de la bonne façon. Une question est que est-il un emplacement pour le f:métadonnées tags?
Ma typique Facelets client page ressemble à ceci:
<ui:composition template="./pattern.xhtml">
<ui:define name="content">
<f:metadata>
<f:viewParam name="userId" value="#{bean.userId}" />
<f:viewParam name="startRecord" value="#{bean.startRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
<f:viewParam name="sort" value="#{bean.sort}" />
</f:metadata>
<h1>Data Table</h1>
etc
De sorte que le f:métadonnées et de l'enfant f:viewParam balises sont rencontrés dans le corps de ma page. Mon modèle.xhtml modèle dispose également d'une section (nommé "header") qui pourrait mettre ces balises dans la section d'en-tête. Devraient-ils être mis là? Fait-il une différence ou suis-je mis en place pour des effets secondaires, je n'ai pas encore vu?
InformationsquelleAutor AlanObject | 2012-03-25
Vous devez vous connecter pour publier un commentaire.
Techniquement, il n'a pas d'importance où vous déclarez la
<f:metadata>
dans la vue, tant que c'est dans le haut niveau de la vue (si, lors de l'utilisation de gabarits, dans le modèle client et donc pas dans le modèle de master). Lorsque la vue se construire, les métadonnées sont en principe pas partie de la JSF composant de l'arbre, mais de la vue racine (que vous pouvez obtenir sur un per-view parViewDeclarationLanguage#getViewMetadata()
).La plupart des auto-documentation serait de se poser la
<f:metadata>
dans le haut de la vue, de sorte que vous pouvez voir toutes les métadonnées au premier coup d'œil sans avoir à faire défiler vers le milieu ou le bas de l'affichage du code source.Lors de l'utilisation d'une plaine page, il suffit de le mettre juste avant le
<h:head>
.Lors de l'utilisation de gabarits, de l'approche recommandée, comme indiqué dans le
<f:métadonnées>
de la balise de la documentation, serait de déclarer un distinct<ui:insert name="metadata">
dans le modèle de master et de laisser le client définissent le<f:metadata>
dans un<ui:define name="metadata">
.f:metadata
ne peuvent pas être placés par exemple dans un modèle de page, afin de le rendre réutilisable? Mais que faire si il y a un peu d'action, nous voulons exécuter pour chaque vue avant qu'ils ne se rendait?<f:event>
. Il n'est pas réellement nécessaire pour être placé à l'intérieur de<f:metadata>
. Voir aussi stackoverflow.com/questions/7343220/...<h:head>
, la même<f:metadata>
balise de documentation dit:This must be a child of the <f:view>
. Est-il implicitef:view
au plus haut niveau ou quelque chose?UIViewRoot
. Voir aussi stackoverflow.com/q/8883476