如何根据方法值阻止UI

时间:2015-05-14 15:24:11

标签: jsf primefaces dialog blockui

我需要您的帮助,根据方法UpdateDatatable的返回值阻止表单,该方法将返回"是",如果commandButton"打印"被解雇了。如果它被触发,我需要在对话框结束时阻止UI,否则不要阻止它。目前我的代码是,每次都阻止,我正在关闭对话框:

<p:dialog id="ss" header="SSS" widgetVar="ss" modal="true" showEffect="fade"
        hideEffect="fade" resizable="false" >
    <p:ajax event="close" listener="#{hrd.UpdateDatatable}"/>
    <p:blockUI trigger="ss" block=":Requests">
        <p:graphicImage width="50" value="/resources/images/ajax.gif">
        </p:graphicImage>
    </p:blockUI>
<<p:commandButton value="Print" id="Print" actionListener="#{hrd.updatePrint}"/>
</p:dialog>

1 个答案:

答案 0 :(得分:0)

删除trigger并将widgetVar添加到p:blockUI组件,以便能够直接触发它。

<p:blockUI block=":Requests" widgetVar="blockUIVar">

让您的打印按钮设置全局js变量。

<p:commandButton value="Print" id="Print" actionListener="#{hrd.updatePrint}"
    onclick="window.printClicked = true;"/>

检查变量状态并在close请求开始时根据需要触发UI块。如果可以重新打开对话框,请重置变量状态。

<p:ajax event="close" listener="#{hrd.UpdateDatatable}"
    onstart="if (window.printClicked) { PF('blockUIVar').show(); window.printClicked = false; }"/>