Is there any way (or a correct way) to conditionally show a dialog on primefaces based on a backing bean condition? The code looks like the following:
<!-- dialog declaration -->
<p:dialog id="dialogTest" widgetVar="dialogTest" header="#{text['modal.header']}" modal="true" >
<h:outputText value="Test output" />
</p:dialog>
<!-- caller -->
<p:menuitem value="Check" actionListener="#{backingBean.performCheck}" oncomplete="PF('dialogTest').show()" icon="ui-icon-arrowthick-1-e"/>
My backing bean looks like the following:
private boolean conditionFlag; // ... +getter
public void performCheck() {
// ... access managers (database)
this.conditionFlag = dao.check();// some check;
}
I just want to show the dialog in case the conditionFlag
is true
. How can I do something like this on p:menuitem
after performCheck
runs?
oncomplete="if (#{backingBean.conditionFlag}) { PF('dialogTest').show() }"
- JSF 2.0
- Primefaces 5
- Java 1.7
I got this to work as follows
The backing bean remains unaltered (as in the question).
The main difference is in the
oncomplete
attribute and the ajaxupdate
attribute ()Just bind the boolean variable to the
visible
attribute of dialog.and then let the menu item execute as normal:
No extra work necessary. For best results, use a
@ViewScoped
bean.just add
update="@this"
to thep:menuitem
. then youroncomplete
block will work as you expect it to.