Senhores, vejam o problema,
Tenho um VOItemExpressao com dois atributos : id e descricao.
No meu bean tenho uma lista desse VOItemExpressao com valores inseridos por usuario e uma lista de VOItemExpressao com os valores selecionados no componente.
Estou usando um <h:selectManyListbox> para trabalhar com essas listas. Segue alguns trechos de codigo para ilustrar melhor o que estou fazendo:
No meu Bean
/** Lista de expressao selecionada na tela */
private List<VOItemExpressao> expressaoSelecionada = new ArrayList<VOItemExpressao>();
/** Lista de expressao da tela */
private List<VOItemExpressao> listaExpressao = new ArrayList<VOItemExpressao>();
No meu xhtml, o componente onde sao incluido valores e selecionados.
<s:decorate id="expressaoDaTelaIdDecoration" template="/template/templateValidacao.xhtml">
<h:selectManyListbox
converter="#{ManterRegraModoRealTimeBean.converterID}"
id="listaExpressao" size="6"
styleClass="TextInput"
style="width:500px;"
value="#{ManterRegraModoRealTimeBean.expressaoSelecionada}">
<s:selectItems value="#{ManterRegraModoRealTimeBean.listaExpressao}" var="tp" label="#{tp.descricao}" />
</h:selectManyListbox>
</s:decorate>
Ainda no meu xhtml, no botao onde será capturado os valores dos respectivos Fields, estou usando ajax para “rerenderizar” no meu selectMany
<a4j:commandLink id="botaoIncluir" value="Incluir" styleClass="CommandButtonsLinks" action="#{ManterRegraModoRealTimeBean.addExpressao}" reRender="expressaoDaTelaIdDecoration"/>
Nessa re-renderizacao em ajax está o problema.
Quando vou inserir novos valores nessa lista, inserindo sempre na ultima posicao da lista está tudo ok, a re-renderizacao ocorre normalmente e os novos valores sao apresentados no componente.
O problema é que tenho uma funcionalidade que se o usuario selecioanar uma linha e clicar em incluir novos valores, tenho que inserir na posicao onde está a linha selecionada. No meu bean a insercao ocorre normalmente porem isso nao é re-renderizado na tela!!!
por exemplo, se usar um insert posicional como lista.add(posicao, elemento) essa minha lista nao é re-renderizada na tela enquanto nao dou um refresh na mesma!!! se eu apertar F5 blz, atualiza, senao, nao atualiza.
Ja tentei ao inves de usar ajax usar um <h:commandLink> normal e nao funcionou tambem, ao que tudo indica o problema está em manipular as posicoes dessa lista e re-renderizar na tela, mas quando insiro na ultima posicao da lista funciona ok!!!
alguem tem alguma ideia?? ja tentei usar a4j:region e <a4j:outputPanel ajaxRendered=“true”> no meu selectMany mas nada.
nao sei se ficou muito confuso o que tentei explicar acima, se tiver tento explicar melhor…
vlw!