| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/06/2010 21:43:12
|
neeryck
Java Ninja
![[Avatar]](/images/avatar/84c5ce2b2981e8392cc9e5d300c23303.jpg)
Membro desde: 10/07/2009 11:34:12
Mensagens: 274
Offline
|
Srs.
Podem apostar que só postei aqui depois de muito pesquisar no google.
Diga-mos que eu tenha a seguinte situação:
Como faço para inserir um AjaxCommandButton(UIComponentTagBase) nos container's que existem na API do JSF?? Alguém sabe??
Muito obrigado desde então.
[]'s
|
"É impossível para um homem aprender aquilo que ele acha que já sabe"(Epítero). |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/06/2010 07:08:50
|
ranophoenix
JavaEvangelist
![[Avatar]](/images/avatar/c8e3407440b018f4d16df.jpg)
Membro desde: 28/02/2004 22:49:47
Mensagens: 389
Offline
|
Opa neeryck!
Sei muito bem pelo que você está passando.
Com o passar do tempo trabalhando com JSF, tenho formada, pelo menos por enquanto, as seguintes opiniões:
1) Procure sempre um componente que faça o que você pretende, caso não encontre, pese muito bem o custo/benefício de se contruir um componente ou mude o seu projeto de interface para se adequar a uma nova realidade;
2) Interfaces extremamente dinâmicas, mesmo com JSF 2, ainda estão longe de serem uma realidade. O seu caso é um exemplo, muitos "componentes" são implementados através de tags, ou seja, além de (muitas delas) serem processadas muito cedo no ciclo de vida JSF (RESTORE_VIEW) não podem ser adicionadas através de binding. A tag ui:include é um exemplo clássico. Imagine o cenário onde você quer adicionar includes dinâmicos através de Ajax: no seu include você aponta para uma propriedade de um bean de sessão contendo a viewId que você deseja ir e ações setam esse atributo para mudar o viewId de acordo com a necessidade. Parece simples? E é! Mas com JSF 2 simplesmente não dá para fazer, pelo menos não de forma simples. A tag ui:include é executada na fase RESTORE_VIEW, ou seja, vai no bean de sessão e dá um getViewId no seu bean de sessão, depois lá na frente (INVOKE_APPLICATION) é invocada a ação que muda a viewId no bean de sessão, ou seja, nesse momento ao renderizar a página vai ser exibida ainda a viewId anterior e não a setada pela sua ação. Tem workarounds que fazem duas requisições Ajax, mas isso, além de ser um típico caso de POG, gera outros problemas, pq vc passa a ter que aumentar o scopo dos seus beans, tendo em vista que vão ter que manter o estado entre, no mínimo, duas requisições. Fora problemas com viewid duplicados em virtude do render partial e outras coisitas mais.
Para quem quiser saber mais:
http://technicalbrainwave.wordpress.com/2009/10/18/layouting-and-dynamic-includes-in-facelets/#more-136
http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=1251&start=0
Até mais!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/06/2010 07:19:02
|
ibira
Thread.start()
![[Avatar]](/images/avatar/db68424c064838f1bfdd2380c06b1ee6.png)
Membro desde: 09/08/2007 15:58:59
Mensagens: 39
Offline
|
Ao invés de AjaxCommandButton utilize HtmlAjaxCommandButton.
Utilizo assim e funciona na boa......
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2011 15:04:43
|
Alexandre Vilas Boas
JavaTeenager
![[Avatar]](/images/avatar/dff8e9c2ac33381546d96deea9922999.jpg)
Membro desde: 07/05/2004 15:57:56
Mensagens: 181
Localização: São Paulo
Offline
|
ibira wrote:Ao invés de AjaxCommandButton utilize HtmlAjaxCommandButton.
Utilizo assim e funciona na boa......
Obrigado, estava quebrando a cabeça aqui com AjaxCommandButton.
|
Consolador inside |
|
|
 |
|
|
|
|