Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Dúvida no Ex. 4 da Aula 10 - Atualizando para JSF 2.2

Olá,

A validação do campo e-mail não está funcionando como deveria. Quando preencho esse campo incorretamente então a validação não está ocorrendo.

A seguir o meu projeto no GitLab: https://gitlab.com/cviniciusm/jsf-livraria

Por que a validação não está funcionando ?

10 respostas

Oi Cassius,

o código parece ok, vc está usando qual navegador?

No código fonte (no html dentro do navegador) aparece o campo com type="email"?

abs

Oi Cassius, tudo bem?

Não testei, mas pra usar o type=email você precisa submeter o formulário sem ajax.

Tenta colocar ajax=false no p:commandButton.

Abraços!

é verdade!! vlw leo :)

Olá,

Conforme o projeto que citei, não estou usando ajax no p:commandButton no login.xhtml .

Um vez que estou usando Primefaces, para deixar mais uniforme o formulário, usarei o f:validateRegex para validar o e-mail, conforme o seguinte arquivo: http://www.mkyong.com/jsf2/primefaces/primefaces-jsf-email-validator-example/

P.S.: acredito que a expressão regular acima é mais completa que aquela da documentação do HTML5 (https://www.w3.org/TR/html-markup/input.email.html).

Oi Cassius,

o problema é que o p:commandButton sempre usa ajax :) Não é preciso usar f:ajax, ele já tem isso embutido.

no html aparece o type="email"?

abs

Oi Cassius,

Mais uma coisa: temos um treinamento dedicado ao primefaces agora:

https://cursos.alura.com.br/course/jsf-primefaces

abs, Nico

solução!

Olá,

Achei a solução aqui: http://stackoverflow.com/questions/16175178/hmessages-does-not-display-messages-when-pcommandbutton-is-pressed

Deve-se usar <p:messages ... autoUpdate="true" /> ou <p:commandButton ... update=":messages" /> !

Olá Nico,

Pretendo fazer esse curso "Curso Java e JSF 2 - II: Componentes ricos com Primefaces" em breve :-).

Olá,

Só para finalizar fiz o seguinte no meu login.xhtml :

...
<p:outputLabel value="Email:" for="email" />

<p:inputText id="email" value="#{loginBean.usuario.email}"
    required="true" validatorMessage="Formato de e-mail inválido">
    <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
</p:inputText>

<p:outputLabel value="Senha:" for="senha" />

<p:password id="senha" value="#{loginBean.usuario.senha}" required="true" />

<p:message for="senha" id="messageSenha" autoUpdate="true" />

<p:commandButton value="Efetuar Login" action="#{loginBean.efetuaLogin}" update="@form" />

Assim, a mensagem "Formato de e-mail inválido" aparece quando o formulário é submetido com e-mail incorreto.

Oi Cassiu,

perfeito, assim vc executou uma validação com regex server-side. a outra validação (f:passThroughAttribute) seria cliente-side, ou seja dentro do navegador.

abs