Datatable + selectbooleancheckbox + jsf

Olá Pessoal,

estou com o seguinte problema: Possuo um jsf, onde há um datatable que exibe um graphicImage , um selectBooleanCheckbox e uma outputtext. Ao clicar em um checkbox qualquer, quero chamar um método (StepBean.showSelectedValueEquipment). Ao chamar este método, quero analisar todos os itens do meu datatable que estão com o checkbox marcados.
Para eu verificar se realmente o meu método está sendo chamado, eu apenas inseri o comando System.out.println para retornar os valores do meu datatable. Até então, nenhum problema.
O meu problema neste cenário é o seguinte: eu inicio todos meus checkbox como false. Ao clicar pela primeira vez em um checkbox qualquer, o método showSelectedValueEquipment é chamado, e é impresso em meu log o conteúdo do meu datatable, porém o checkbox que eu selecionei, aparece como falso. Se eu continuar e clicar em um outro checkbox qualquer, o método é chamado novamente, então ele imprime o primeiro checkbox que cliquei como true e o segundo como false (quando digo segundo checkbox, me refiro ao segundo checkbox que cliquei, sendo este em qualquer posicao, décimo, vigésimo, etc…).
Sempre que meu método é chamado, ele imprime o estado anterior do meu datatable, e sempre ignora a ultima alteração que fiz.
O que devo fazer para que ao clicar em um checkbox, ele chame meu método e eu possa retornar os dados atualizados de meu datatable?

<h:dataTable value="#{StepBean.dtRunningExperimentChooseEquipment}" onclick=“submit()” var=“equipment” border=“2” binding="#{StepBean.dataTableRunnigExperimentChooseEquipment}">

<h:column>
	<h:graphicImage value="/images/lab.jpg" width="60"/>
</h:column>
				
<h:column>
	<h:selectBooleanCheckbox value="#{equipment.selected}"     valueChangeListener="#{StepBean.showSelectedValueEquipment}"></h:selectBooleanCheckbox>
</h:column>
				
<h:column>
	<h:outputLabel value="#{equipment.description}"></h:outputLabel>
</h:column>

</h:dataTable>

public class StepBean {

private List dtRunningExperimentChooseEquipment = new ArrayList();
private UIData dataTableRunnigExperimentChooseEquipment;

gets e sets…

public void showSelectedValueEquipment(ValueChangeEvent event) {

List<RunningExperimentChooseMaterialWrapper> x;
x = ((List<RunningExperimentChooseMaterialWrapper>) dataTableRunnigExperimentChooseEquipment.getValue());

for (int i=0; i < dataTableRunnigExperimentChooseEquipment.getRowCount(); i++) {
	System.out.println(x.get(i).getDescription());
	System.out.println(x.get(i).getSelected());
	System.out.println();
}

}

}

Obrigado!!

http://www.guj.com.br/posts/list/15781.java

Olá Haamilton,

na verdade já pesquisei… sou iniciante em java, talvez tenha passado pela solução e não tenha visto…
continuarei na procura da solução… =)

thanks…

Olá pessoal…

resolvi… na raça e sorte! =)

envolvi meu selectbooleancheckbox por um commandlink! Se meu método for chamado pelo meu command link, ele exibe o conteúdo de meu datatable atualizado! =)

O código ficou assim…:

				<h:column>
					<h:commandLink value="" action="#{StepBean.showSelectedValueEquipment}">
						<h:selectBooleanCheckbox value="#{equipment.selected}" onclick="submit()"/>
					</h:commandLink>
				</h:column>

[]s