Condicionar validação de formulario JSF
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
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
Curtidas 0
Respostas
Davi Costa
17/02/2012
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
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
GOSTEI 0
Daniel Everling
17/02/2012
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.
Por exemplo, fiquei pensando em controlar a validação do form pela quantidade da lista que popula o dataTable.
GOSTEI 0
Davi Costa
17/02/2012
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
att Davi
GOSTEI 0
Daniel Everling
17/02/2012
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.
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.
GOSTEI 0
Davi Costa
17/02/2012
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
att Davi
GOSTEI 0
Daniel Everling
17/02/2012
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.
GOSTEI 0
Davi Costa
17/02/2012
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
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
GOSTEI 0
Daniel Everling
17/02/2012
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
Como te disse, não sei se é a maneira mais correta de fazer, mas assim consegui validar o form em tempo de execução.
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.
GOSTEI 0
Davi Costa
17/02/2012
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
Bons estudos
att Davi
GOSTEI 0
Dyego Carmo
17/02/2012
Opa !
Resolvido o problema ?
Se sim, poderia fechar o chamado ?
Valeu !
Resolvido o problema ?
Se sim, poderia fechar o chamado ?
Valeu !
GOSTEI 0