olá Pessoal, hoje o post é dedicado para quem está aprendendo JSF e pretende usar os recursos de validação de campo do proprio framework. Perguntas comuns sobre validação: como validar um email? Como validar um campo número? É isso que veremos, claro que mostrarei um pequeno exemplo “motivador”, vai de você criar outras validações para seu formulário. Observe que é algo bem simples e funcional. E para aqueles que estão estudando para antiga SCJP e acham que regex é algo somente para certificação, Vejam nesse post o poder que regex tem. No post tem um link para “testador de expressões regex online”. Muito show, já tem até alguns exemplos prontos tais como: validação de IP, telefone etc.
lets go…
Preparando o ambiente
Certifique-se que você tem os arquivos .jars necessário para rodar JSF. Confira nos posts a seguir quais os arquivos que vc precisa. Sem falar que usar Jboss tools seria uma boa ideia. Para o nosso exemplo usaremos o plugin no Eclipse Jboss tools para suporte à JSF. Também não pode esquecer que nosso application server será o Tomcat, se ainda não instalou/configurou veja no exemplo abaixo.
Desenvolvimento
-
Com o Jboss tools configurado e Eclipse aberto crie um novo JSF Project.
-
Em WebContent crie uma página .jsp que redirecione para uma página chamada formulario.jsp. Mas, lembre-se que no seu arquivo index.jsp o code fica assim:
-
Feito isso, vamos agora codificar nosso formulário em JSF. Para isso crie uma página em jsp com suporte JSF em WebContent chamando de formulario.jsp. Veja abaixo como criar uma página caso tenha esquecido:
-
Abaixo temos nossa página em JSF. O uso de immediate=true em cada campo é para quando aparecer a mensagem de validação a pagina atual não seja processada, ou seja, ela não vai para a página seguinte enquanto você não atender os requisitos da validação.
-
Agora crie uma página em .jsp que exiba uma mensagem qualquer. Pois, ela somente será exibida quando as validações da pagina do formulário forem válidas. Nos colocamos nessa página uma mensagem: “Mensagem enviada com sucesso!”
-
Feito isso, precisamos criar nosso bean e controller. Então crie um package chamado br.com.bean e nele crie uma classe Java chamada de Usuario.java e deixe conforme abaixo:
-
Agora crie um package br.com.controller e nele crie uma classe chamada Controller. É essa classe que será responsável por controlar nossa aplicação. Ela que diz aonde o usuário vai parar depois de uma determinada ação. Deixe conforme abaixo:
-
Vá no arquivo face-config.xml e crie um ManageBean para a classe Controller conforme a imagem abaixo:
-
Agora vamos adicionar as rules para navegação com as pages. Clique em Navigation Rules e a direita add. Veja abaixo como ficou:
-
Precisamos apenas configurar o Navigation Cases. Veja:
-
Uma explicação básica: “Quando vinher a uma mensagem chamada ‘sucesso’ da página formulario.jsp, favor de ir para a pagina mensagem.jsp”.
-
Agora precisamos criar uma classe que vai validar os campos do nosso formulário, que nesse caso será apenas e-mail e idade. Para isso precisamos implementar uma interface JSF que vai nos auxiliar no processo. É a interface Validator. Para isso crie um package br.com.validator e uma classe EmailValidar e informe que essa classe implementa a interface Validator. Veja meu exemplo abaixo:
-
Agora deixe sua classe conforme abaixo. E para não perder o costume, explicação está nos comentários.
-
Agora vamos validar o campo idade, onde é permitido apenas digito. Crie a classe IdadeValidar.java e implemente o método Validator.
-
Feito isso precisamos apenas informar para o nosso face-config.xml que usaremos nosso validador nesta aplicação. Veja como fazer isso:
-
Faça o mesmo para o validator idade.
-
Damos um nome ao validador e informamos a classe que tem a validação, o nome é requirido pois é ele que vamos usar no form.
-
Agora vá na sua página que contém o formulário e deixe os campos email e idade conforme o código abaixo.
Testando Aplicação
-
Salve as alterações. Se o tomcat estiver rodando, dar um stop e em seguida um start. E veja aplicação rodando. No nosso caso vamos rodar dentro do próprio Eclipse. Para isso a perspectiva que estamos usando é JavaEE depois clique com o botão direito em cima do projeto e vá em Run >> Run as >> Run on Server.
Vou ficando por aqui e espero que tenham gostado do post. Simples e básico.
See you next post! 😀
Por gentileza, eu estou tentando valida um e_mail, de maneira idêntica ao ensinado acima, porém não está funcionando. Criei a classe de validação (EmailValidar), no meu input (<h:inputText), estou utlizando a validação () e configurei essas medidas no config.sys.
Obrigado
olá Carlos,
É muito dificil saber o que está acontecendo sem ver o código, mas certamente há um pequeno detalhe de diferença entre o seu e o meu e vc tá tendo problemas.