2

在使用这样的 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>
4

1 回答 1

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唯一的...

于 2012-05-17T05:28:33.790 回答