【问题标题】:Primefaces Ajax calling JavascriptPrimefaces Ajax 调用 Javascript
【发布时间】:2012-04-18 00:59:13
【问题描述】:

我想知道您是否可以在 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 中。

知道我会怎么做吗?

【问题讨论】:

    标签: ajax jsf primefaces


    【解决方案1】:

    使用 PrimeFaces 提供的 RequestContext API。

    首先规范化你的 ajax 监听器:

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

    然后在action listener方法中相应地添加脚本到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()");
        }
    }
    

    【讨论】:

    • p:ajax 中没有 actionListener。我有 PrimeFaces 6.3 的最新版本
    • 说明如何以及在何处将 saveOverlay 定义为 javaScript 代码可能是一个好主意和很大的帮助。
    • @Mazy JavaScript 代码通常在 JavaScript 文件中定义。
    • 又该如何称呼呢? JS/文件/地址/name.function() ?如果在同一个包中与 name.function() ?
    • @Mazy:与 JSF 无关。从这里开始htmldog.com/guides/javascript/beginner
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2017-02-21
    • 2023-04-04
    • 2012-12-16
    • 2011-08-25
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多