validação ao trocar de tab no primefaces

1,853 views
Skip to first unread message

Rafael Carvalho

unread,
Apr 25, 2012, 3:43:34 PM4/25/12
to jav...@googlegroups.com

Caros,

 

Estou usando o tabView do primefaces e gostaria de saber se é possível mudar de tab somente se não houver erro de validação.

 

Tipo, o usuário digitou errado e a tab não muda e faz um efeito lá do jQuery, tipo o do login de modal do showcase do primefaces, ou se não mudar já ta bom demais.

Abraços, Rafa

Paulo Renner

unread,
Apr 25, 2012, 3:45:37 PM4/25/12
to jav...@googlegroups.com
Creio que para isso é melhor utilizar o componente Wizard.

Rafael Carvalho

unread,
Apr 25, 2012, 3:58:07 PM4/25/12
to jav...@googlegroups.com

Paulo,

 

Infelizmente não dá, pois é uma tela de atualização de cadastro, então tem as imformações da pessoa em várias abas e ela atualiza os campos que faltam, tipo na aba informações pessoais falta um telefone e na aba endereço mudou o número e assim por diante.

 

Com o wizard obriga que a pessoa passe por todo o fluxo antes de alterar o que ela quer.

 

Se alguém souber.... Rafa.

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Rafael Carvalho

unread,
Apr 26, 2012, 11:53:52 AM4/26/12
to jav...@googlegroups.com
Pessoal,

Alguém sabe como fazer? ao trocar de aba no p:tabView, troccar somente
se passar na validação?

Tem como saber se houve algum erro de validação no managedbean? como
eu volto para a aba que estava selecionada no p:tabview?

Abraços, Rafael.

Em 25/04/12, Rafael Carvalho<rafa...@gmail.com> escreveu:
--
[...] Todos os homens sentem o impulso interior para amar de maneira
autêntica: amor e verdade nunca desaparecem de todo neles, porque são
a vocação colocada por Deus no coração e na mente de cada homem. Bento
XVI. Caritas in veritate, "Carta Encíclica".

Rafael Carvalho

tel: +55 (61) 3336-6274 | 8430-3880
email: rafa...@gmail.com

Rafael Ponte

unread,
Apr 26, 2012, 12:05:18 PM4/26/12
to jav...@googlegroups.com
Já olhou na documentação se o componente não possui algum evento para tratar a troca de tabs?

2012/4/26 Rafael Carvalho <rafa...@gmail.com>

Rafael Pestano

unread,
Apr 26, 2012, 12:23:16 PM4/26/12
to jav...@googlegroups.com
Olá Rafael, faz um tempo que não trabalho com esse componente mas vou tentar ajudar:

"Tem como saber se houve algum erro de validação no managedbean? "  FacesContext.getCurrentInstance().getMaximumSeverity() pode te ajudar, os níveis de severidade são: 
0 = info, 1 = warn, 2 = error e 3 = fatal. 

Talves voce precise chamar um callback na troca de aba(<p:ajax event="tabChange" listener="#{tabBean.onTabChange}") para checar se houve erro no bean.

 Outra maneira seria verificar se houve erro no cliente com a variavel "args" (toda requisição ajax do primefaces carrega essa variavel), veja esse exemplo: http://www.primefaces.org/showcase/ui/dialogLogin.jsf

Ainda do lado do cliente você pode utilizar a widgetVar do componente TabView para trocar/voltar de aba com a função widgetVar.select(indiceDaAba), a função widgetVar.getActiveIndex() retorna o indice da aba corrente também pode te ajudar

Do lado do servidor tem o atributo activeIndex do tabView, ele serve para manter o indice da aba atual.



 
Att,

Rafael M. Pestano

Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
Graduando em Ciência da Computação UFRGS
@realpestano 


De: Rafael Carvalho <rafa...@gmail.com>
Para: jav...@googlegroups.com
Enviadas: Quinta-feira, 26 de Abril de 2012 12:53

Rafael Ponte

unread,
Apr 26, 2012, 12:24:58 PM4/26/12
to jav...@googlegroups.com
As dicas do Pestado foram muito boas. A partir delas você pode decidir qual estratégia seguir e até onde pesquisar/ler sobre cada uma delas.

2012/4/26 Rafael Pestano <rmpe...@yahoo.com.br>

Marcos Henrique Polverini

unread,
Apr 26, 2012, 12:36:10 PM4/26/12
to jav...@googlegroups.com
Faz um binding na tab !

Att.

Marcos H. Polverini

Rafael Ponte

unread,
Apr 26, 2012, 12:39:15 PM4/26/12
to jav...@googlegroups.com
Pode até funcionar fazendo binding se não houver um evento/callback, na qual seria uma melhor alternativa, mas component binding é uma das piores features do faces.

2012/4/26 Marcos Henrique Polverini <marcosp...@gmail.com>

Marcos Henrique Polverini

unread,
Apr 26, 2012, 12:48:00 PM4/26/12
to jav...@googlegroups.com
Tem tambem o jquery validation que pode ser adaptado !

@rponte
nunca usei o component
binding, prefiro resolver com o javascript ou ajax !

Att.

Marcos H. Polverini

Everton Fujimoto

unread,
Apr 26, 2012, 12:53:09 PM4/26/12
to jav...@googlegroups.com
O que eu costumo fazer é chamar um javascript com o "click" do objeto "aba" que estava ativa. Possivelmente é uma gambiarra, mas funciona!!!


Att.
Everton William Fujimoto
Hecate Systems
CIO
(47)3394-5516
(47)9947-5481

Rafael Carvalho

unread,
Apr 26, 2012, 2:44:45 PM4/26/12
to jav...@googlegroups.com

Obrigadão pessoal,

 

Tenho aí um tantão de opções, vou dar uma estudada e tentar implementar alguma.

 

Abraços, Rafa

Rafael Carvalho

unread,
May 26, 2012, 9:19:05 AM5/26/12
to jav...@googlegroups.com
Caros,

Só para dar um retorno...

Consegui fazer a validação da seguinte forma:

<h:form id="form>
<p:tabView dinamic="true">
<p:ajax event="tabChange" listener="#{pessoaController.onTabChange}"
process="@form"/>
<p:tab>
...
</p:tab>
...

Com o @form ele faz a validação do mesmo ao chamar o listener e não
troca de tab caso haja alguma falha.

Brigadão novamente... Rafael Carvalho

Em 26/04/12, Rafael Carvalho<rafa...@gmail.com> escreveu:
> tel: +55 (61) 3336-6274 <tel:%2B55%20%2861%29%203336-6274> | 8430-3880

Everton Fujimoto

unread,
May 26, 2012, 9:42:16 AM5/26/12
to jav...@googlegroups.com
o tenso dessa solução é que se tiver dados a serem validados na outra aba, que ele ainda não entrou, não muda também... (pelo menos na versão primefaces 2, que tentei fazer dessa forma, e foi mais fácil usar as abas do jquery diretamente)

Att.
Everton William Fujimoto
Hecate Systems
CIO
(47)3394-5516
(47)9947-5481



Rafael Carvalho

unread,
May 31, 2012, 8:39:06 AM5/31/12
to jav...@googlegroups.com
Caro,

Realmente, se estiver em um form só o tabview ele tenta fazer a
validação, mesmo estando setado para dinamic o tabview.

Alguém sabe como faço para mudar a aba, por exemplo clico no botão e
seto a aba com id = caracteristicas.

O componente do primefaces é o tabview ou tab? tenho que pegar pelo
facescontext?

Atts,

Em 26/05/12, Everton Fujimoto<evert...@gmail.com> escreveu:
Devo agradar a Deus, aos homens fazer o bem. São Pio de Pietrelcina

Leandro Kersting de Freitas

unread,
Jul 3, 2013, 3:17:11 PM7/3/13
to jav...@googlegroups.com
Também estou com o mesmo problema.
Reply all
Reply to author
Forward
0 new messages