o que eu preciso é saber como pegar o valor selecionado no combo e a posicao dele (row) na tabela.
Alguem pode dar alguma luz, ou talvez, uma outra forma de implementar ?
Att.
Ola Ricardo. Especifique melhor que framework vc está usando pra p:dataTable. Pelo visto é primefaces, onde nao tenho muita experiencia, mas vai aqui uma dica: No richfaces tem um atributo na tag dataTable chamado rowKeyVar. Ficaria mais ou menos assim:
Ou seja, aquele ALERT la em onchange do selectOneMenu vai imprimir o numero da linha da tabela, começando por 0.
No caso do PrimeFaces, vi que o nome é bastante parecido. No seu caso, deve ser “rowIndexVar”.
Quanto ao valor do combo, vc pode passar via javascript, ja que vc ainda nao submeteu este valor.
Espero ter ajudado.
No seu método invocado no “actionChangeListener”, tente isso:
UIComponent c = suaVariavelValueChangeEvent.getComponent();
Integer row = (Integer) c.getAttributes("xpto"); //aqui vai o nome do atributo que voce definou na tag f:attribute
public void teste(ValueChangeEvent event){
//Linha da tabela
String linha = (String) event.getComponent().getAttributes().get("linha");
//Valor do select
HtmlSelectOneMenu sel = (HtmlSelectOneMenu) event.getComponent();
String valor = (String) sel.getValue();
}
Espero ter ajudado. Atente para o onchange=“submit()” …
Pô, a minha gambiarra deveria ter funcionado, hein :lol: … ou nao, o valor do atributo deve estar sendo processado quando voce faz o “getAttribute” e o valor “#{riv}” já não existe mais…
Por curiosidade, voce está usando qual versão do JSF?
Se for a versão 2, sugiro não usar o valueChangeListener e sim o p:ajax do Prime, que já tem ai no seu código, chamando um metodo do seu bean e passando o valor como parametro (JSF 2 permite isso,nao?). Assim:
//metodo do bean
public void metodoInvocadoNoActionDaTagPAjax(int linha){
//...
//na sua pagina seria: <p:ajax event="change" action"#{bean.metodoInvocadoNoActionDaTagPAjax(rowIndexVar)}"
}
Se a sua versão do JSF for 1.2, não vai rolar a passagem do parametro no action, então sugiro o uso do f:param dentro da p:ajax
Pô, a minha gambiarra deveria ter funcionado, hein :lol: … ou nao, o valor do atributo deve estar sendo processado quando voce faz o “getAttribute” e o valor “#{riv}” já não existe mais…
Por curiosidade, voce está usando qual versão do JSF?
Se for a versão 2, sugiro não usar o valueChangeListener e sim o p:ajax do Prime, que já tem ai no seu código, chamando um metodo do seu bean e passando o valor como parametro (JSF 2 permite isso,nao?). Assim:
//metodo do bean
public void metodoInvocadoNoActionDaTagPAjax(int linha){
//...
//na sua pagina seria: <p:ajax event="change" action"#{bean.metodoInvocadoNoActionDaTagPAjax(rowIndexVar)}"
}
Se a sua versão do JSF for 1.2, não vai rolar a passagem do parametro no action, então sugiro o uso do f:param dentro da p:ajax
Que bom, cara…nesse caso pediria a gentileza de editar o seu primeiro post e alterar o título do tópico com [RESOLVIDO], para que os colegas com o mesmo problema tambem tenham uma solução à mao