package br.com.triadworks.issuetracker.controller.util; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.RequestScoped; import javax.faces.component.EditableValueHolder; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; @ManagedBean @RequestScoped public class FacesUtils { @ManagedProperty("#{facesContext}") private FacesContext facesContext; public void adicionaMensagemDeErro(String msg) { facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg)); } public void adicionaMensagemDeInformacao(String msg) { facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg)); } /** * Limpa os dados dos componentes de edição e de seus filhos, * recursivamente. Checa se o componente é instância de EditableValueHolder * e 'reseta' suas propriedades. * <p> * Quando este método, por algum motivo, não funcionar, parta para ignorância * e limpe o componente assim: * <p><blockquote><pre> * component.getChildren().clear() * </pre></blockquote> * :-) */ public void cleanSubmittedValues(UIComponent component) { if (component instanceof EditableValueHolder) { EditableValueHolder evh = (EditableValueHolder) component; evh.setSubmittedValue(null); evh.setValue(null); evh.setLocalValueSet(false); evh.setValid(true); } if(component.getChildCount()>0){ for (UIComponent child : component.getChildren()) { cleanSubmittedValues(child); } } } public void cleanSubmittedValues(String componentName) { UIComponent component = facesContext.getViewRoot().findComponent(componentName); if (component != null) cleanSubmittedValues(component); } public FacesContext getFacesContext() { return facesContext; } public void setFacesContext(FacesContext facesContext) { this.facesContext = facesContext; } public void addFlashAttribute(String key, Object value) { facesContext.getExternalContext().getFlash().put(key, value); } public void addViewScopeAttribute(String key, Object value) { facesContext.getViewRoot().getViewMap().put(key, value); } @SuppressWarnings("unchecked") public <T> T getViewScopeAttribute(String key) { return (T) facesContext.getViewRoot().getViewMap().get(key); } }