Mensagem de erro PrimeFaces com interface Converter

Fala pessoal, estou com uma dificuldade ao apresentar uma mensagem de erro com converter do PrimeFaces, segue o codigo:

Classe Java;

@FacesConverter(value = "mascaraProcessoConverter")
public class MascaraProcessoConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String objeto) {
        if (objeto != null) {
            return objeto;
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object objeto) {
        return mascaras((String) objeto);
    }

    public String mascaras(String valor) {
    	if (valor.length() != 0) {
    		if (valor.length() == 13) {
    			StringBuilder stringBuilder = new StringBuilder(valor);
    			stringBuilder.insert(3, ".");
    			stringBuilder.insert(7, ".");
    			stringBuilder.insert(11, "/");
    			return valor = stringBuilder.toString();
    		}
    		if (valor.length() == 14) {
    			StringBuilder stringBuilder = new StringBuilder(valor);
    			stringBuilder.insert(4, ".");
    			stringBuilder.insert(8, ".");
    			stringBuilder.insert(12, "/");
    			return valor = stringBuilder.toString();
    		}
    		if (valor.length() == 16) {
    			StringBuilder stringBuilder = new StringBuilder(valor);
    			stringBuilder.insert(4, ".");
    			stringBuilder.insert(8, ".");
    			stringBuilder.insert(12, "/");
    			stringBuilder.insert(17, "-");
    			return valor = stringBuilder.toString();
    		}
    		if (valor.length() == 21) {
    			StringBuilder stringBuilder = new StringBuilder(valor);
    			stringBuilder.insert(7, ".");
    			stringBuilder.insert(16, "/");
    			stringBuilder.insert(21, "-");
    			return valor = stringBuilder.toString();
    		}
    		else {
    			JsfUtil.addGlobalMsgError(null, "Processo", "Número de dígitos insuficientes, verifique a fonte.");
    			return valor = null;
    		}    	
    	}
    	else {
    		return valor;
    	}
    }
}

Input xHTML;

<h:outputLabel for="processoM" value="Processo N&ordm;:" />
<p:inputText id="processoM" value="#{operacaoMedicao.operacao.processo}"
	size="22" placeholder="" converter="mascaraProcessoConverter"
	required="true" requiredMessage="Campo processo obrigatório!">
		<p:ajax event="blur" update="processoM,messagemM,btSalvarMedicao"
		process="@this" listener="#{operacaoMedicao.habilitarConfirmDialogMedicao}"></p:ajax>
</p:inputText>
<p:watermark for="processoM" value="Insira somente os números" />
<p:message id="messagemM" for="processoM" />

Ao ser inserido um número que nao entra em nenhum dos if’s deveria ser apresentada uma mensagem de erro, mas ela nao aparece

e qual a dificuldade?

atualizei, obrigado kkk

a mensagem de erro não é apresentada

no seu xhtml vc adicionou o <p:growl ??

<p:growl id="msgTela" autoUpdate="true" escape="true" showDetail="true"/>

e deve ficar dentro do <h:form

sim sim

haaa agora vi no seu código num é um conversor que vc tem que criar é uma validador tipo isso

    @FacesValidator(value = "mascaraProcessoValidator")
    public class MascaraProcessoValidator implements Validator{

        @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

ai seu conceito na função mascaras vai ter q mudar

e no seu xhtml fica assim:

mude para

validator="mascaraProcessoValidator"

mas como ocorreria a conversão?

pode deixar o converter…

entendi, mas nao funciona ainda, vou explicar melhor como deve funcionar

existem 4 padrões desse numero que será recebido, entao uma mascara não é bem vinda, necessitando de uma conversão dos valores, inserindo os caracteres devidos nos lugares certo, como ocorre

mas caso o numero inserido não esteja dentro dos padrões, o valor deve ser zerado e retornar uma mensagem de erro AO CLICAR FORA DO CAMPO (blur), sem submeter o formulario ainda, coisa que nao ocorre com o validator

eu tenho uma certa compreensão do que pode estar acontecendo, a unica tag que pode apresentar mensagens é as listener, e a converter, assim como outras imagino, nao

se houvesse como fazer a conversão com um listener acho que resolveria

bom então vo te passar um link que talvez possa te ajudar:

https://pablonobrega.wordpress.com/2009/08/10/implementando-converter-e-validator-de-cpf/

é um exemplo de conversão e validação de cpf…

1 curtida

é cara, fiz como esse bixo ai fala, mas nada, o validator nao funciona com onblur, tem de submeter o formulario mesmo
mas valeu pela atenção, mesmo nao solucionando aprendi bastante :smiley:

ainda nao resolvido…

Ve se te ajuda em algo…

https://www.primefaces.org/showcase/ui/ajax/event.xhtml

abraço!

1 curtida