javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] Abas dinâmicas

Subject: Re: [javasf] Abas dinâmicas
From: Rubens Gadelha
Date: Thu, 29 Apr 2010 09:32:51 -0300
Foi exatamente o que eu fiz (vide email anterior). E para mim foi até melhor criar programaticamente mesmo, e bem mais simples do que eu pensei...




Em 29 de abril de 2010 09:24, Rafael Ponte <rponte@xxxxxxxxx> escreveu:
Rubens,

Bem estranho este problema continuar ocorrendo com c:forEach, pois o mesmo não é um componente e certamente não deveria ser entendido pelo Trinidad como um componente filho.

Enfim, talvez você deva correr para criação de componentes programaticamente via component-binding.


2010/4/28 Rubens Gadelha <rubensgadelha@xxxxxxxxx>
Estou entendendo perfeitamente a sua explicação Rafael. Porém, mesmo com c:forEach ocorreu aquele erro do Trinidad:

org.apache.myfaces.trinidadinternal.renderkit.uix.PanelTabbedRenderer encodeBegin
WARNING: Apenas tr:showDetailItem é permitido como filho de tr:panelTabbed.

Criar os componenetes programaticamente até seria melhor para mim, mas eu não sei como criar um
tr:showDetailItem programaticamente para atribuir ao tr:panelTabbed que até eu já acesso do MB via binding.





Em 28 de abril de 2010 13:00, Rafael Ponte <rponte@xxxxxxxxx> escreveu:

Rubens,

Para este caso você precisa utilizar-se do c:forEach. Pois ele será o responsável por criar (leia-se instanciar) componentes dinamicamente no momento de construir a árvore de componentes.

O c:forEach é uma tag e por tanto será executada no momento da construção da árvore de componentes (build-time), deste modo criando os componentes que estiverem dentro do laço (neste caso tome cuidado com os ID's).

O ui:repeat (assim como h:dataTable) são componentes de iteração, e por mais que eles iterem sobre outros componentes no final só existirá UM único componente da árvore do Faces. Deixe-me exemplificar:

<ui:repeat ... >
   <h:inputText ... >/
</ui:repeat>

Neste caso, o componente ui:repeat possui apenas UM único componente filho, por mais que ele itere 100 vezes e renderize 100 inputs para o usuário (render-time).

No caso do c:forEach:

<c:forEach ... >
   <h:inputText ... >/
</c:forEach>

Serão instanciados 100 componentes do tipo h:inputText e colocado na árvore de componentes (build-time) e por fim, renderizados 100 inputs para o usuário final (render-time).

Espero que tenha ficado claro o cenário. E por tanto, se você não quiser criar os componentes programaticamente você pode usar o c:forEach, mas nem sempre os eventos e listeners funcionam como gostaríamos em todos os casos.

Enfim, usar JSTL e JSF só com muito cuidado para não ter dor de cabeça :-)


2010/4/28 Rubens Gadelha <rubensgadelha@xxxxxxxxx>
Obragado pela atenção Walter.

Fiz todos os procedimentos possíveis para garantir que não estavam sendo usado dados de cache.
No entanto, o problema persiste. Você já implementou algo parecido? Se tiver alguma outra solução para indicar lhe agradeço...



Em 28 de abril de 2010 11:35, Walter Mourão <walter.mourao@xxxxxxxxx> escreveu:

Não está fazendo sentido para mim... o renderkit só devia ser executado depois que o ui:repeat não existisse mais.
Sendo chato: confira se o seu código novo está rodando mesmo, religando o servidor e/ou conferindo se o facelets/myfaces estão configurados para verificar se o arquivo foi atualizado (facelets.REFRESH_PERIOD, org.apache.myfaces.CONFIG_REFRESH_PERIOD e org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION )
2010/4/28 Rubens Gadelha <rubensgadelha@xxxxxxxxx>

@Walter
Utilizando o ui:repeat ocorre o mesmo erro:

org.apache.myfaces.trinidadinternal.renderkit.uix.PanelTabbedRenderer encodeBegin
WARNING: Apenas tr:showDetailItem é permitido como filho de tr:panelTabbed.



Em 28 de abril de 2010 10:22, Rubens Gadelha <rubensgadelha@xxxxxxxxx> escreveu:

Utilizando o <tr:panelTabbed> recebo o seguinte erro:

org.apache.myfaces.trinidadinternal.renderkit.uix.PanelTabbedRenderer encodeBegin
WARNING: Apenas tr:showDetailItem é permitido como filho de tr:panelTabbed.

Já estou utilizando binding. Segue um trecho de exemplo:

<tr:panelTabbed position="above" binding="#{veiculosBean.pnlVeiculos}">
    <tr:iterator value="#{veiculoBean.listaVeiculos}" var="veiculo">
         <tr:showDetailItem text="#{veiculo.modelo}">
              <tr:panelHeader text="#{veiculo.modelo}">
                  <tr:outputText value="#{veiculo.descricao}"/>
              </tr:panelHeader>
         </tr:showDetailItem>
     </tr:iterator>
</tr:panelTabbed>



Em 28 de abril de 2010 10:13, Glauco P. Gomes <glaucopgomes@xxxxxxxxxxxx> escreveu:

Ja tentou com o ui:repeat ou c:forEach?

Se não der certo, acho que só atravez de binding e codigo java.

Glauco P. Gomes

Rubens Gadelha escreveu:
Alguém já gerou abas dinamicamente com Trinidad?

O <tr:panelTabbed> não aceita um só aceita um <tr:showDetailItem> como filho, impossibilitando o uso de um <tr:iterator>.
Eu preciso que essas abas e os seus respectivos conteúdos sejam gerados de acordo com a seleção de um determinado valor do usuário.

É possível fazer isso com esse componente? Há outro mais adequado para isso?
--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx


--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx


--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx



--
Rafael Ponte
http://www.rponte.com.br

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx



--
Rafael Ponte
http://www.rponte.com.br

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para javasf@xxxxxxxxxxxxxxxx
<Prev in Thread] Current Thread [Next in Thread>