This blog we will see how to close popup with panel window automatically after predefined time.
Lets create af:commandButton and af:popup in a page. On click of button we will display the popup but the popup will close automatically after 3 seconds (3000ms).
The below steps we will follow for auto dismiss the popup.
1. Create af:poll event inside af:popup.
2. Set the timeout for the af:poll event.
3. Create a poll listener method inside bean where we will close the popup through the popup binding.
4. Stop the poll calling multiple times.
The below will be the code stuffs:
Beans:
Note: For panel window and dialog we will follow the above steps for auto dismiss the popup. In case of note window we will set autoDismissalTimeout=”3”.
Lets create af:commandButton and af:popup in a page. On click of button we will display the popup but the popup will close automatically after 3 seconds (3000ms).
The below steps we will follow for auto dismiss the popup.
1. Create af:poll event inside af:popup.
2. Set the timeout for the af:poll event.
3. Create a poll listener method inside bean where we will close the popup through the popup binding.
4. Stop the poll calling multiple times.
The below will be the code stuffs:
<af:popup
id="displayPopup" contentDelivery="lazyUncached"
binding="#{backingBeanScope.backing_PopupClose.popUpBind}">
<af:panelWindow
id="pw14" modal="true" closeIconVisible="false"
contentWidth="318"
styleClass="AFStretchWidth">
<af:panelStretchLayout
id="psl19" inlineStyle=""
styleClass="AFStretchWidth"
topHeight="0px" bottomHeight="50px"
dimensionsFrom="children">
<f:facet
name="center">
<af:panelGroupLayout
layout="vertical" halign="center">
<af:outputText
value="Popup wil close after 3 sec."
inlineStyle="line-height: 35px;"/>
</af:panelGroupLayout>
</f:facet>
</af:panelStretchLayout>
</af:panelWindow>
<af:poll
binding="#{backingBeanScope.backing_PopupClose.pollBind}"
pollListener="#{backingBeanScope.backing_PopupClose.pollListener}"
id="p1"
timeout="3001"/>
</af:popup>
|
Beans:
public void pollListener(PollEvent
pollEvent) {
popUpBind.hide();//
close the popup
pollBind.setRendered(false); // stop poll event calling
}
|
Note: For panel window and dialog we will follow the above steps for auto dismiss the popup. In case of note window we will set autoDismissalTimeout=”3”.
You can download the code: Download
Hi,
ReplyDeleteI used the above logic inside dialog. It is working properly for the first time.
If I click the button for the second time, control is not going to pollListener method since setRendered flag is set to false.
Could you please provide some work around for this.
Thanks,
Deepika