|
|
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
-- Rafael Ponte http://www.rponte.com.br
-- 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
|
|