Estou com um problema em relação a como executar um update de acordo
com a opção do selectOneMenu.
Primeiramente eu tenho uma tela[1] que carrega uma lista de Categorias
e quando escolho uma é carregada uma outra tela[2] que recebe a
Categoria e preenche a mesma. Na tela[2] tem um selectOneMenu que tem
algumas opções, estas opções são mudadas de acordo com a Categoria
escolhida na tela[1]. Hora pode ser C, I ou T por exemplo.
<p:selectOneMenu style="width: 160px;" effect="fade"
value="#{categoriaMBean.categoria.tipo}">
<f:selectItem itemLabel="Cartão" itemValue="C" />
<f:selectItem itemLabel="Texto" itemValue="T" />
<f:selectItem itemLabel="Imagem com Link" itemValue="I" />
<p:ajax listener="#{categoriaMBean.modificarInterface}"
update="grupoRenderizado" />
</p:selectOneMenu>
Este código faz parte da tela[2], que recebe um tipo (C, I ou T) e de
acordo com eles, modifica um panelGroup onde alguns componentes são
renderizados. Se eu já estiver na tela[2] e mudar a opção do
selectOneMenu o panelGroup é atualizado sem problemas. Contudo, o
problema é quando vem da tela[1] que mesmo modificando a opção do
selectOneMenu não atualiza o panelGroup.
Desde já, grato.
Att.
Yuri Cardoso
--
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
On Nov 24, 12:08 pm, YURI NUNES CARDOSO <yncard...@gmail.com> wrote:
> Olá Arthur, obrigado pela resposta.
>
> Tentei com este evente e outros, sem sucesso. Este método
> "modificarInterface" ele recebe como parâmetro um comportamento Ajax e de
> acordo com o tipo passado pela combo, controla quem vai ou não aparecer
> após o update.
>
> Em 24 de novembro de 2011 12:04, Arthur Franco Ferreira <
> arcanjo...@gmail.com> escreveu:
>
>
>
>
>
>
>
> > Tente alterar seu p:ajax para isso daqui:
>
> > <p:ajax listener="#{categoriaMBean.modificarInterface}"
> > update="grupoRenderizado" event="change" />
>
> > *Arthur Franco Ferreira*
> > *Analista Desenvolvedor Web Java Pleno*
> > Licenciado em Computação
> > UNILASALLE-RJ
>
> > 2011/11/24 YURI NUNES CARDOSO <yncard...@gmail.com>
Você fala do panelGroup = "grupoRenderizado"?
On Nov 28, 9:31 am, YURI NUNES CARDOSO <yncard...@gmail.com> wrote:
> Mais uma vez obrigado Ednardo,
>
> Coloquei mas não funcionou. O que não entendo é por que não dispara o
> evento do ajax quando é trocado a opção do selectOneMenu quando vem da
> seleção da categoria da tela anterior. Lembrando, quando eu mudo a opção
> depois da tela carregada, o evento é disparado.
>
> Em 28 de novembro de 2011 09:26, Ednardo Rubens Matos Ignácio <
> ednardorub...@gmail.com> escreveu:
>
>
>
>
>
>
>
> > Pode não ter nada a ver mas troca <h:panelGroup id="grupoRenderizado"> por
> > <h:panelGroup id="grupoRenderizado" layout="block">
>
> > --
> > Ednardo Rubens
> > Analista de Sistemas
> > Email: ednardorub...@gmail.com
Consegui resolver, porém mudei algumas coisas. Basicamente foi isso:
Retirei o método que modificava a interface que era acionado pelo
<p:ajax listener="#{categoriaMBean.modificarInterface}"
Passei a controlar qual tela seria exibida dentro do get de cada
opção, assim:
public boolean isMostrarTexto() {
if (categoria.getTipo().equals("T")) {
mostrarTexto = true;
}
else {
mostrarTexto = false;
}
return mostrarTexto;
}
No xhtml o update ficou assim:
<p:ajax update="grupoRenderizado" />
Com isso, quando a tela[2] é chamada pela tela[1], o selectOneMenu é
mudado e o update é acionado e cada componente com opção "rendered"
verifica qual tipo de categoria está como "true".
Se alguém precisar de mais detalhes, é só falar.
Mais uma vez, obrigado à todos.