J'ai une question concernant le placement de javascript dans les composants facelet. Il s'agit plus d'une meilleure pratique/style que d'un problème de programmation, mais j'ai l'impression que toutes les solutions auxquelles j'ai pensé ont été au mieux des hacks. Ok voici mon scénario:Layouts des composants Facelet et javascript
J'ai un modèle Facelet comme si (mes visages, et apache Trinidad) ...
<ui:composition>
<f:view locale="#{myLocale}">
<ui:insert name="messageBundles" /><!--Here we add load bundle tags-->
<tr:document mode="strict" styleClass="coolStyleDoc">
<f:facet name="metaContainer">
<!--This trinidad defined facet is added to HTML head-->
<tr:group> <!-- blah bal my own styles and js common to all -->
<ui:insert name="metaData" />
</tr:group>
</f:facet>
<tr:form usesUpload="#{empty usesUpload ? 'false' : usesUpload}">
<div id="formTemplateHeader">
<ui:insert name="contentHeader" />
</div>
<div id="formTemplateContentContainer">
<div id="formTemplateContent">
<ui:insert name="contentBody" />
</div>
</div>
<div id="formTemplateFooter">
<ui:insert name="contentFooter">
</ui:insert>
</div>
</tr:form>
<!-- etc...--->
Maintenant, un Facelet qui veut utiliser ce modèle ressemblerait à ce qui suit :
<ui:composition template="/path/to/my/template.jspx">
<ui:define name="bundles">
<custom:loadBundle basename="messagesStuff" var="bundle" />
</ui:define>
<ui:define name="metaData">
<script>
<!-- cool javascript stuff goes here-->
</script>
</ui:define>
<ui:define name="contentHeader">
<!-- MY HEADING!-->
</ui:define>
<ui:define name="contentBody">
<!-- MY Body!-->
</ui:define>
<ui:define name="contentFooter">
<!-- Copyright/footer stuff!-->
</ui:define>
</ui:composition>
Tout cela fonctionne très bien, mais le problème que j'ai est quand je veux utiliser un composant facelet à l'intérieur de cette page. Si le composant facelet a son propre code javascript (jQuery stuff etc), comment puis-je faire en sorte que ce code javascript est inclus dans la section d'en-tête du html généré? Toute aide serait appréciée. S'il vous plaît laissez-moi savoir si cela est pas clair ou quelque chose ... merci à l'avance
Eh bien, peut-être que je n'était pas clair, mais je sais que je peux intégrer js dans le facelet, mais un composant facelet réutilisable est habituellement un fragment, c'est-à-dire qu'il ne contient pas 100% de html propre. Dans mon cas, j'introduis un facelet dans une page qui utilise le template. La facette incorporée ne peut définir que
Eh bien, il suffit de le mettre dans le modèle avec «», puis définissez-le avec «»? –
Bozho