在使用这样的 Facelet 模板的 Facelet 页面中:
<h:head>
<h:outputScript name="custom.js" library="javascript" target="head"/>
</h:head>
<ui:composition template="../../WEB-INF/Template.xhtml">
</ui:composition>
您如何包含自定义 javascript?在上面的代码中,由于 ui:composition facelet 标记,我的 custom.js 被忽略了。
我不想通过将我的 javascript 放入其中来弄乱我的页面,因此我将其外部化到我的资源文件夹中。
但是我如何实现我的目标?
更新:
我基本上有这个按钮,我想在我的 primefaces 按钮的 oncomplete 事件上添加自定义 javascript。
<p:commandButton value="Save"
actionListener="#{memberManagedBean.save}"
oncomplete="handleSaveNewMember(xhr, status, args)"
update=":memberListForm:membersTable"
process="@form" />
但是我没有将我的代码放入其中,而是将其外部化到我的 custom.js
function handleSaveNewMember(xhr, status, args) {
/*More Code*/
addMemberDlg.hide();
}
但是查看为我的按钮生成的 HTML,我的自定义 javascript 代码不包括在内,只添加了函数名称。
<button id="createupdateform:j_idt18" oncomplete:function(xhr, status, args){handleSaveNewMember(xhr, status, args);}});return false;" type="submit"><span class="ui-button-text">Save</span></button>
为什么你认为会这样?
更新 2
您应该将脚本插入 ui:define facelet 标记内,而不是 ui:composition 内。
<ui:composition template="../../WEB-INF/Template.xhtml">
<ui:define name="content">
<h:outputScript name="showmembers.js" library="javascript" target="head"/>
</ui:define>
</ui:composition>