How to Show Notification Message in Richfaces PopUP Panel ?
askkuber Aug 10, 2015 3:26 AMWhat is my Problem ?
For me error/information/notification message working fine for all Non Popup JSF pages but in case of Popup, message showing is not working.
I have design the JSF page like this
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:fn="http://java.sun.com/jsp/jstl/functions"> <ui:composition template="../templates/home-template.xhtml"> <ui:define name="content"> <h:form id="id"> .......... .......... .......... .......... </h:form> <ui:define/> </ui:composition>
home-template.xhtml design is something like this
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:c="http://java.sun.com/jsp/jstl/core"> <h:outputScript name="jquery.js" target="head"/> <h:outputScript name="someother.js" target="head"/> <h:head> <link rel="stylesheet" type="text/css" href="../resources/css/style.css" /> <h:body> <head> ........... ........... </h:head> <h:form> .......... .......... .......... </h:form> <div class="body-main"> <div> <rich:panel id="messagePanel"> <ui:include src="../templates/message/Error.xhtml"/> <ui:include src="../templates/message/Success.xhtml"/> <ui:include src="../templates/message/NotifyWarning.xhtml"> </rich:panel> </div> </h:body> </html>
In Error.xhtml i have written below code
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<rich:notify id="flashErrorMessage1" rendered="#{flash.errorMessage.length() > 0 }"
showShadow="false" sticky="true">
<f:facet name="detail">
<rich:panel id="flashErrorMessage" >
<h:graphicImage value="../resources/image/error.png" />
Failed:#{messages.errorMessage}
</rich:panel>
</f:facet>
</rich:notify>
</ui:composition>
In Bean class i am doing like this
Flash messages = FacesContext.getCurrentInstance().getExternalContext()
.getFlash();
messages .put("errorMessage", bundle
.getString("failedupdate"));
This is working fine for normal pages(NON POPUP Pages).
What i tried ?
But now for popup pages its not working even in popup window i tried to add
<h:messages styleClass="errorMessage" globalOnly="true" />
but it wont work.
Then i added below code in popup window and it worked fine
<h:outputText value="Add Group Feature" rendered="#{flash.errorMessage.length() > 0 }"/>
How i am calling Popup Window?
From normal JSF Pages through command button i am calling Popup Window.
<ui:composition template="../templates/home-template.xhtml">
<ui:define name="content">
<ui:include src="popup.xhtml" >
<ui:param name="parentBean" value="#{BeanName}" />
</ui:include>
<h:form id="id">
..........
..........
..........
<a4j:commandButton value="PopUpWindow" action="#{BeanName.someAction}" oncomplete="#{rich:component('popup')}.show(true)" ></a4j:commandButton>
</h:form>
<ui:define/>
</ui:composition>
From PopUp Window JSF Bean I am calling Parent JSF Bean method
Flash flash = FacesContext.getCurrentInstance().getExternalContext()
.getFlash();
public String addFeature(Object parentBeanName){
if(parentBeanName instanceof A){
A a = (A) parentBeanName;
a.addFeature(featuesObj,flash);
}else if(parentBeanName instanceof B){
B b = (B) parentBeanName;
b.addFeature(featuesObj,flash);
}
return null;
}
And addFeature() method which is inside ParentBean of Popup
public String addFeature(MyFeature feature,Flash flashObj) {
if(Some condtion){
flashObj.put("errorMessage",feature.getName()+ bundle.getString("message"));
return null;
}
}