【发布时间】:2011-03-04 03:35:33
【问题描述】:
我有一个关于在 facelet 组件中放置 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...--->
现在,想要使用此模板的 facelet 如下所示:
<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 的标题部分中? 任何帮助,将不胜感激。请让我知道如果这不清楚或什么...提前谢谢
【问题讨论】:
标签: java javascript jsf facelets