JSF - Formulário de cadastro

7 respostas
gustavodelgado

Estou utilizando o JSF em um formulário de cadastro, onde o primeiro campo é o código. Eu gostaria de fazer com que quando a pessoa digitar este código, o sistema verifique se ele já está cadastrado. Se estiver, retorna os dados, preenchendo o formulário todo.
Teria como fazer esta busca quando o cara tira o foco do campo (usando por exemplo o evento OnBlur chamando um JavaScript q envia o form)??? Ou tenho q fazer um botão buscar com uma action?
Mesmo que eu fizer com um botão, tenho um problema: o form possui outros campos que são obrigatórios (marcados com o required = ‘true’), portanto ele não será enviado qdo cliar no buscar.
Qual a melhor maneira de se resolver isso? Alguém teria um exemplo prático e poderia me enviar??

Grato,
Gustavo.

7 Respostas

Mauricio_Linhares

No onBlur() do componente você coloca um “submit()”.

gustavodelgado

Mas se eu usar o onBlur, como vou fazer ele utilizar uma action que faz o select e retorna o registro caso ele exista?
E também o submit não funcionará por causa dos outros campos que são obrigatórios.

toninho

ou entao vc usa o commandButton e define a propriedade immediate=“true”…
Dessa forma, qdo vc clicar o botão ele vai executar a action, pulando a fase de validacao para os outros campos de preenchimento obrigatório.

:wink:

gustavodelgado

Colocando o immediate=“true” ele envia o formulário? Não sei se estou fazendo algo errado, mas meu objeto está vindo nulo.

toninho:

ou entao vc usa o commandButton e define a propriedade immediate=“true”…
Dessa forma, qdo vc clicar o botão ele vai executar a action, pulando a fase de validacao para os outros campos de preenchimento obrigatório.

:wink:

Mauricio_Linhares

“immediate=true” deveria garantir que a sua ação vai ser executada antes da validação ser aplicada.

gustavodelgado

Certo, mas ele cria o JavaBean com os valores q estão no form? Eu precisaria dele para pegar o código que o cara digitou. Quando eu faço

Convenio c = (Convenio)FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(“Convenio”);

O meu c está vindo nulo.

afamorim

O que vc quer fazer é o vaklidator para o seu codigo.

de uma olhada nos componentes do adf faces da oracle.
ja estão disponiveis no site do myfaces, com a nomenclatura antiga.

quando vc baixar ele vai vim com varios exemplos.
procure algo com ajax para ficar mais elegante.

outra forma de se fazer seria vc colocar um metodo validator.
quando vc submete-se ele validaria seu codigo, mais vc perderia o lance de a cada clique vc validar se o codigo ja existe.

ps: ja tem um componente no sandbox, que algo que sugere, a cada clique ele vai sugerindo os existentes.

Criado 10 de abril de 2006
Ultima resposta 10 de abr. de 2006
Respostas 7
Participantes 4