在使用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?在上面的代码中,我的custom.js被忽略,因为 ui:composition facelet标签。
我不想通过将我的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>
答案 0 :(得分:3)
您可以将其放在<ui:composition
<ui:composition template="../../WEB-INF/Template.xhtml">
<h:outputScript name="custom.js" library="javascript" target="head"/>
</ui:composition>
或将<h:outputScript
放在Template.xhtml
无论如何,<h:head>
最好只放在Template.xhtml
...