我有一個關於在facelet組件中放置javascript的問題。這更多的是關於最佳實踐/風格而不是編程問題,但我覺得所有我認爲最好的解決方案都是黑客。好吧,這裏是我的情況:Facelet組件的佈局和javascript
我有像這樣一個模板的facelet(我的臉,和Apache特立尼達和多巴哥)......
<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 stuff等),我怎樣才能讓它的JavaScript代碼包含在生成的html的頭部分? 任何幫助,將不勝感激。請讓我知道這是不明確或東西...在此先感謝
好吧,也許我不清楚,但我知道我可以嵌入js在facelet中,但可重用的facelet組件通常是一個片段,即它不包含100%正確的html。就我而言,我將一個facelet嵌入到使用該模板的頁面中。例如,嵌入的小平面只能定義
那麼,只需將它放在模板中用''然後用''定義它呢? –
Bozho
2010-06-16 07:57:35