public void addUser(){
......
String message = "Duplicate user name. Username already exists";
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( FacesMessage.SEVERITY_INFO, message, message));
}
But I am getting the following warning and I am not able to Show the error message in the Client Side Page.
WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.sourceId=rstReport:timeHorizonDecoration:timeHorizon[severity=(ERROR 2), summary=(value is required), detail=(value is required)]
The Solution I made as
I have Created a Utility class to add the Error messages into the Current FacesConfig Instance.
import java.util.Iterator; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; public class ErrorMsgUtil { public static void addError(FacesMessage.Severity severity,String componentId,String messageText){ FacesMessage message = new FacesMessage(messageText); FacesContext context = FacesContext.getCurrentInstance(); UIComponent component = findComponent(context.getViewRoot(), componentId); context.addMessage(component.getClientId(context), message); } private static UIComponent findComponent(UIComponent parent, String id) { if(id.equals(parent.getId())) { return parent; } Iteratorkids = parent.getFacetsAndChildren(); while(kids.hasNext()) { UIComponent kid = kids.next(); UIComponent found = findComponent(kid, id); if(found != null) { return found; } } return null; } }
And I have Called the Error Method as Follows
public void addUser(){ try{ ........... ... addUser ... Code }catch(UserAlreadyExistException e){ String message = "Duplicate user name. Username already exists"; ErrorMsgUtil.addError(FacesMessage.SEVERITY_ERROR,"errorMsg", msg); } }
and added one h:message for="errorMsg";
It is working fine for the AJAX4JSF Page implementation.
No comments:
Post a Comment