Validator JSF não exibe erro na tela

4 respostas Resolvido
primefacesjsfjava
P

Olá Pessoal, preciso de uma ajuda nesse código, tenho duas telas em que uso o recurso de validator uma
pré-existente no sistema e outra que criei. A existente usa o recurso de validator JSF e está funcionando
a que criei em tese criei a mesma estrutura mas não está exibindo o erro na tela como deveria. No console
me retorna o erro:

000000de RenderRespons W There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
These unhandled FacesMessages are:

  • 1 CPF inválido!

A Única diferença significativa dos métodos que acionam o validator é que a tela que está funcionando
tem no botão que aciona a busca um actionListener, e o método no Bean na tela que funciona usa Action event
e a outra devolve uma String conforme exemplos abaixo:

–Tela que funciona
–xhtml
<h:commandButton
value="#{msg[‘Operacao.Movimento.botaoPesquisar’]}"
actionListener="#{operacaoMovimentoBBean.pesquisar}"
disabled=“false” onmouseover=“this.style.cursor=‘hand’”
onmouseout=“this.style.cursor=‘hand’” class=“botaoV” />

Bean

public class OperacaoMovimentoBBean extends BasicBBean implements InitializingBean {

public void pesquisar(ActionEvent event) {



}

}

–Tela que não funciona
–xhtml
<p:commandButton id=“buttonPesquisarTitulo”
value="#{msg[‘Operacao.Estorno.botaoPesquisar’]}"
action="#{operacaoEstornoBBean.pesquisar}"
styleClass=“botaoV”
disabled=“false” />

Bean

public class OperacaoEstornoBBean extends BasicBBean implements InitializingBean {

public String pesquisar() {



return PAGE;

}

}
 My xhtml (o mesmo para as duas telas)

<p:inputText id=“idCpf”

value="#{myBean.filter.cpf}">

<f:validator binding="#{cpfValidator}" />

<p:message for=“idCpf” display=“tooltip” />

</p:inputText>

–CpfValidator (o mesmo para as duas telas)
public class CpfValidator implements Validator {

public void validate(FacesContext ctx, UIComponent ui, Object obj) throws ValidatorException {
		log.info("*** CpfValidator.validate ***");
	
		if (obj != null && StringUtils.isNotBlank(obj.toString()) && !utils.isValidCPF(obj.toString())) {
			throw utiljsf.gerarErroValidacao(obj, FacesMessage.SEVERITY_ERROR,
				MESSAGE_CPF_INVALID);
		}
	}
}

– Erro retornado no console
000000de RenderRespons W There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
These unhandled FacesMessages are:

  • 1 CPF inválido!

Alguma idéia ? Desde já obrigado !

4 Respostas

D

Quando postar código, selecione o trecho em questão e clique no botão </> acima do editor, para deixá-lo formatado.

P

Consegui, resolver, troquei o <p: commandButton por <h: commandButton e funcionou, só não consegui identificar se há limitação dessa funcionalidade (validator) no primefaces.

M
Solucao aceita

Se funcionou, é pq o commandButton do PrimeFaces é por padrão ajax="true", o h:commandButton não é ajax, ou seja, seja o ajax pra false no seu commandButton do Prime:

<p:commandButton ajax="false" ... />
P

Maravilha Mike, obrigado pelo retorno.

Criado 28 de novembro de 2019
Ultima resposta 2 de dez. de 2019
Respostas 4
Participantes 3