我想基于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
并使用其呈现的属性来实现此目的。
有没有办法在不改变太多东西的情况下完成这项工作?我必须在很多按钮中完成它。
答案 0 :(得分:10)
我知道这个问题有点陈旧,但我最近在条件/动态确认方面遇到了同样的问题,上述解决方案都没有对我有用。
经过一些测试后,我使用禁用的属性(在PrimeFaces 6.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>
答案 1 :(得分:3)
有点hacky,但你可以在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>
答案 2 :(得分:1)
要尝试的一件事是使用布尔值来呈现<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>
选项。
答案 3 :(得分:0)
您必须使用可见而不是渲染。代码将是这样的:
<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>
如果您需要显示oncomplete对话框,请在正确的事件中设置dlgWgt.show()。