У меня есть вопрос относительно размещения javascript в компонентах Facelet. Это больше касается лучшей практики / стиля, чем проблемы программирования, но я чувствую, что все решения, о которых я думал, были в лучшем случае взломаны. Хорошо, вот мой сценарий:
У меня есть такой шаблон лицевой стороны (мои лица и 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...--->
Теперь фейслет, который хочет использовать этот шаблон, будет выглядеть следующим образом:
<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>
Все это работает довольно хорошо, но у меня возникает проблема, когда я хочу использовать компонент facelet внутри этой страницы. Если компонент facelet имеет свой собственный код javascript (jQuery и т. Д.), Как я могу сделать так, чтобы этот код javascript был включен в раздел заголовка сгенерированного html?
Любая помощь будет оценена. Пожалуйста, дайте мне знать, если это не ясно, или что-то ... заранее спасибо