<rich:message> + facet

5 respostas
yorgan

Olá pessoal,
Estou utilizando o rich:message, mas ao invés de um texto quero utilizar uma imagem como retorno da validação.
Fiz assim:

<rich:message for="dsEmail" id="messageEmail">
                            <f:facet name="ok">
                                <h:graphicImage url="img/sucess.gif" />
                            </f:facet>
                            <f:facet name="error">
                                <h:graphicImage url="img/erro.gif" />
                            </f:facet>
                        </rich:message>

Mas ele está mostrando o ‘OK’ e o ‘ERROR’ que são os retornos do bean.
Alguém sabe o que tenho que mudar para ele carregar as imagens que estão nos facet´s?

[]´s

Daniel

5 Respostas

D

Bom dia.
Eu nunca usei desse jeito que vc esta qurerendo.
Mas não deveria haver uma condição no rendered com
base na messagem da managedBean.

yorgan

Olá Daniel,
Amigo, não entendi a questão do rendered, poderia explicar melhor?

[]´s

Daniel

D

Primeiro fala vc tem um atributo no managedBean e as
mesangem é para aparecer conforme este atributo?

yorgan

Quando o foco saí do inputText, ele dispara essa ação no bean:

public Object getAsObject(FacesContext context, UIComponent component, String value) {
        value = value.trim();
        FacesMessage message;
        if (!value.equals("")) {
            if (validaEmail(value)) {
                message = new FacesMessage("ok");
                message.setSeverity(FacesMessage.SEVERITY_INFO);
                context.addMessage(component.getClientId(context), message);
            } else {
                message = new FacesMessage("error");
                message.setSeverity(FacesMessage.SEVERITY_ERROR);
                context.addMessage(component.getClientId(context), message);
            }
        }
        return value;
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value == null) {
            return "";
        }
        return value.toString();
    }

Nesse caso, caso o a palavra tenha tamanho maior que zero, ele vai disparar uma mensagem de ‘ok’ se estiver correto e ‘error’ se estiver errado. Mas na JSP ele está carregando o texto, e pensei que utilizando o h:facet eu conseguiria capturar a String e mostrar uma imagem.

[]´s
Daniel

D

Para o mensagens funcionar deste jeito você deve setar a severidade da mensagem no código.

public static void adicionaMensagemDeErro(String mensagem){
		FacesContext contexto=FacesContext.getCurrentInstance();
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,mensagem,mensagem);
		contexto.addMessage(mensagem, message);
	}
Criado 10 de setembro de 2008
Ultima resposta 1 de out. de 2010
Respostas 5
Participantes 2