使用p:confirm有条件地打开全局p:confirmDialog



我想打开一个基于bean布尔值的全局p:confirmDialog。我想要这样的东西:

<p:commandButton value="Save" actionListener="#{bean.save}" 
                 update="@form" oncomplete="jsfunction();">
    <p:confirm header="Confirm" message="Are you sure?" rendered="#{bean.boolean}"/>
</p:commandButton>

但渲染在那里不起作用(我希望如此)。

此外,我不想复制p:commandButton并使用其渲染属性来实现这一点。

有没有办法在不改变太多事情的情况下完成这项工作?我必须按很多按钮来做。

我知道这个问题有点老了,但我最近在条件/动态确认方面遇到了同样的问题,上面的解决方案都不适合我。

经过一些测试,我使用禁用的属性(在PrimeFaces6.0中引入)构建了我的按钮,如下所示:

<p:confirmDialog global="true">
    <p:commandButton value="Yes" type="button" />
    <p:commandButton value="No" type="button" />
</p:confirmDialog>
<p:commandButton actionListener="#{myBean.myMethod} value="Submit">      
    <p:confirm header="Confirmation" message="Are you sure?" disabled="#{myBean.boolean}"/>
</p:commandButton>

这有点麻烦,但您可以在commandButton和p:confirm标记之间使用JSTL"c:if"标记。因为JSTL标记是在Facelet页面的执行流的早期解释的,所以p:confirm标记不会抱怨它的父级不是有效的commandButton。例如:

      <p:commandButton action="#{myBean.myMethod} value="Submit">
          <c:if test="#{myBeanBean.warningEnabled}">
            <p:confirm header="Confirmation" message="#{myBean.warningMessage}" icon="ui-icon-alert"/>
          </c:if>
      </p:commandButton>

要尝试的一件事是使用布尔值来呈现<p:confirmDialog>

<p:commandButton value="Save" actionListener="#{bean.save()}" 
                 update="@form" oncomplete="jsfunction();">
    <p:confirm header="Confirm" message="Are you sure?" />
</p:commandButton>
<p:confirmDialog global="true" rendered="#{bean.boolean}">
    <p:commandButton value="Yes" type="button"  />
    <p:commandButton value="No" type="button" />
</p:confirmDialog>

如果这对你不起作用,我认为唯一的其他方法就是你试图避免的两个<p:commandButton>选项。

必须使用visible而不是rendered。代码是这样的:

    <p:commandButton value="Save" actionListener="#{bean.save()}" 
                 update="@form" onstart="dlgWgt.show();" oncomplete="jsfunction();">
    <p:confirm header="Confirm" message="Are you sure?" />
</p:commandButton>
<p:confirmDialog global="true" visible="false" widgetVar="dlgWgt">
    <p:commandButton value="Yes" type="button"  />
    <p:commandButton value="No" type="button" />
</p:confirmDialog>

如果您需要在完成时显示对话框,请在适当的事件中设置dlgWgt.show()。

最新更新