Galera, procurei nos foruns e não encontrei algo que resolve-se o meu problema.
No entanto, se alguém soube de algum poste que me ajude, posta ai.
O meu problema é o seguinte…
Tenho uma aplicação que utiliza como framework web, o Icefaces.
Na minha view principal eu incluo varias outras subviews, Em uma
dessas subviews é realizado uma consulta no banco e é feito a listagem dos dados.
Até ai tudo ok, mas esses dados estão dentro do compenente, panelCollapsible, e
eu coloquei um evento no atributo actionListener desse componente para que toda
vez que ele for expandido, seja realizado uma consulta no banco para realizar a atualização
de apenas um dos dados contido no panelCollapsible. O evento é então disparado, o meu manager bean
realiza a consulta no banco corretamente, mas os dados do componente, outputText, não
atualizar. Não entendo muito aqueles métodos: processUpdates, processDecodes, mas
tentei utilizado pra ver ser conseguia fazer funcionar, só que nao deu certo!
O codigo do panelCollapsible está assim:
<ice:dataTable value="#{produtoBean.produtos}" var="produto">
<ice:column>
<ice:panelCollapsible expanded="false" styleClass="panelCollapsible"
actionListener="#{produtoBean.teste}">
<ice:panelGrid columns="3" cellspacing="4" width="100%">
<ice:panelGroup>
<ice:outputText value="Nome" style="font-weight: bold"/>
<ice:outputText value="#{produto.nome}" />
</ice:panelGroup>
<ice:panelGroup>
<ice:outputText value="Valor" style="font-weight: bold"/>
<ice:outputText value="#{produto.preco}" />
</ice:panelGroup>
<ice:panelGroup>
<ice:outputText value="Classificação" style="font-weight: bold"/>
<ice:panelSeries value="#{produtoBean.classificacoes}" var="classificacao">
<ice:panelGroup>
<ice:outputText value="#{classificacao.nome}" />
</ice:panelGroup>
</ice:panelSeries>
</ice:panelGroup>
</ice:panelCollapsible>
</ice:column>
</ice:dataTable>
O evento “teste” do bean produtoBean esta assim:
public void teste(ActionEvent evento) {
UIComponent panelCollapsible = evento.getComponent();
if(((Boolean) panelCollapsible.getAttributes().get("expanded")).equals(Boolean.TRUE)){
UIComponent panelGrid = (UIComponent) panelCollapsible.getChildren().get(0);
UIComponent panelGroup = (UIComponent) panelGrid.getChildren().get(0);
UIComponent outputText = (UIComponent) panelGroup.getChildren().get(1);
String nome = (String) outputText.getAttributes().get("value");
List classificacoes = produtoService.getProduto(nome).getClassificacoes();
if(classificacoes != null) {
setClassificacoes(classificacoes);
}else {
setClassificacoes(new ArrayList());
}
FacesContext.getCurrentInstance().renderResponse();
}
}
O que eu tá havendo de errado com esse codigo?
Pessoal é essencial para minha aplicação manter a estrutura de componentes
lista no código acima, eu quer dizer que as informações sobre o produto deverá
está contida dentro do panelCollapsible.
Att