2

我想知道你是否可以在 ajax 语句中调用 javascript,特别是我试图让以下工作。

        <p:commandLink id="saveButton" value="Save" >
            <p:ajax event="click" actionListener="#{bean.saveButtonPressed()}" />
            <p:ajax event="click" actionListener="if(#{cbean.showSaveOverlay}){saveOverlay.show();}" />
        </p:commandLink>

并且 showSaveOverly 在 saveButtonPressed 中设置。

知道我会怎么做吗?

4

1 回答 1

12

使用 PrimeFaces 提供的RequestContextAPI。

首先标准化您的 ajax 侦听器:

<p:ajax event="click" listener="#{cbean.showSaveOverlay}" />

然后相应地将脚本添加到RequestContext#getScriptsToExecute()动作侦听器方法中:

public void showSaveOverlay() {
    if (...) {
        RequestContext.getCurrentInstance().getScriptsToExecute().add("saveOverlay.show()");
    }
}

如果您还没有使用 PrimeFaces 7.0,请RequestContext#execute()改用:

public void showSaveOverlay() {
    if (...) {
        RequestContext.getCurrentInstance().execute("saveOverlay.show()");
    }
}
于 2012-04-18T02:25:32.427 回答