如何更新我在PrimeFaces commandButton组件的oncomplete事件中使用的javascript代码

时间:2017-06-28 20:10:16

标签: javascript primefaces jsf-2

我正在使用Primefaces来开发我的网站 我使用commandButton组件。当我点击这个按钮时,我调用我的bean方法来更新两个布尔值。根据这两个变量,我会显示不同的对话框。

这是我的代码:

    <p:commandButton action="myBean.method" oncomplete="
    if (#{myBean.var1}) {  
        PF('dialog1').show() 
    } else { 
        if (#{myBean.var2}) { 
            PF('dialog2').show() 
        } else { 
            PF('dialog3').show() 
        }
   }" />

有了这个,oncomplete事件总是得到我的bean变量的初始值,而不是更新的那些:(
我不知道这是否是最好的方法;)

1 个答案:

答案 0 :(得分:0)

为什么不直接使用Primefaces的RequestContext实用程序?有了它,您可以设置是否打开哪个对话框的逻辑。

<c:forEach items="${requestContext.queueConsumerQuery.consumers}" var="row">

或者如果你真的想在javascript中使用你的逻辑,你也可以使用public void method(){ RequestContext requestContext = RequestContext.getCurrentInstance(); if (var1) { requestContext.update("PF('dialog1').show()"); } else { if (var2) { requestContext.update("PF('dialog2').show()"); } else { requestContext.update("PF('dialog3').show()"); } }

回调参数(引自Primefaces用户指南6.0)

在某些情况下,您需要在ajax回调中支持来自bean的值。打回来 参数被序列化为JSON,并作为参数提供给ajax回调。

HTML:

addCallbackParam()

BEAN:

<p:commandButton actionListener="#{bean.validate}"
oncomplete="handleComplete(xhr, status, args)" />

isValid参数将在handleComplete回调中可用;

public void validate() {
//isValid = calculate isValid
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("isValid", true or false);
}