Condicionar validação de formulario JSF

17/02/2012

0

Boa Dia
Gostaria de saber se existe uma maneira de condicionar a validação de um formulário em JSF, por exemplo, estou desenvolvendo uma tela onde tenho uma formulário e ao salvar o formulário eu adiciono os dados do form em um dataTable abaixo deste formulário, para o cadastro isso funciona redondinho,
mas para a edição desta tela, como o dataTable ja vira carregada, gostaria que o formulário não fosse validado, isso é possível ?

Att
Daniel Everling

Daniel Everling

Responder

Posts

17/02/2012

Davi Costa

Sim é possivel sim.

Já testou usar um commandlink ao invés de um commandButtom na sua tabela ou as propriedades immediate = true , para a ação não precisar que os campos required estejam preenchidos.

att Davi
Responder

17/02/2012

Daniel Everling

Bom dia não cheguei a testar, mas devo fazer alguma coisa no bean ?
Por exemplo, fiquei pensando em controlar a validação do form pela quantidade da lista que popula o dataTable.
Responder

17/02/2012

Davi Costa

Não precisa basta vc ver como a biblioteca do jsf (primefaces, richfaces....) que vc está usando faz para submeter o formulário desconsiderando os campos required, com uma rápida consulta na documentação ou no google vc acha como fazer isso, se preocupando apenas com a página.. nada de bean.

att Davi
Responder

17/02/2012

Daniel Everling

Davi, não sei se entendi de forma correta, mas tentei o seguinte

Em todos os campos required=true do formulário eu coloquei também a propriedade immediate=true, funcionou como falou que funcionaria, mas se o dataTable que eu tenho no mesmo formulário estiver vazio ele tem que pedir o preenchimento do formulário (e isso não ocorreu) e se o dataTable tiver registros não precisaria validar o mesmo.

O que estou fazendo nessa tela é o cadastro de nota fiscal, fiz essa tela usando o componente p:wizard do primefaces, ela é dividida em 5 partes e essa parte especificamente é a que efetua o cadastro de seus itens, logo se o meu dataTable tiver registros não preciso validar o formulário, pois será uma edição da nota e o usuário pode não querer cadastrar nenhum item novo apenas ir para a próxima etapa, entendeu ?
Existe a possibilidade de fazer isso ?
Tbm pensei em renderizar dos forms diferentes, um com os campos required=”true” e outro sem required, mas achei meio feio e estou pesquisando uma maneira melhor de fazer.
Responder

17/02/2012

Davi Costa

Em todos os campos required=true do formulário eu coloquei também a propriedade immediate=true...., na verdade era para ser no botão que executa a edição apenas e na botão ou link que vc pega da tabela para colocar seus campos na edição.

att Davi
Responder

17/02/2012

Daniel Everling

Isso eu tbm tinha testado e realmente funcionou como falaste, mas como estou usando o componente p:wizard (http://www.primefaces.org/showcase/ui/wizard.jsf) o componente adiciona a tela um botão de avançar e voltar que serve para navegar entre as abas, ai ao tentar passar de aba o click desse botão (avançar) pede o preenchimento do formulário e o p:wizard não aceita o atributo imediate.
Responder

17/02/2012

Davi Costa

Hmmm sakei,
esse componente não tem mais atributos né?
Que tal pegar os atributos da tabela e jogar nos campos... cria essa coluna, com essa ação (botão).. pode ser uma saída

att Davi
Responder

17/02/2012

Daniel Everling

Davi, muito obrigado pela ajuda, dentro daquela forma de validação que te comentei que estava pensando eu consegui resolver,
Como havia falado minha intenção era validar o form no bean e de certa forma consegui fazer isso.

Não sei se é a maneira certa de fazer mais no bean eu criei uma variável boolean que eu mudo para true ou false conforme minha lista e no xhtml eu fiz o seguinte

 <p:inputText required=#{NotaFiscalCadastroBean.validaCampoItensNota} />  


Como te disse, não sei se é a maneira mais correta de fazer, mas assim consegui validar o form em tempo de execução.
Responder

17/02/2012

Davi Costa

Desse modo é viável sim. Seria bom deopis sugerir para a arquitetos do primefaces que esse componente tenha a propriedade immediate.
Bons estudos

att Davi
Responder

20/02/2012

Dyego Carmo

Opa !

Resolvido o problema ?

Se sim, poderia fechar o chamado ?

Valeu !
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar