Tomahawk: erro ao utilizar um t:checkbox em um t:dataTable

Ola Pessoal,
Tenho uma aplicação para gerenciar uma pelada do fim de semana e estou com o seguinte problema:

uso MyFaces 1.2.2 e Tomahawk 1.1.6 e facelets 1.0.14 e tenho o seguinte jspx chamado lstjogador.jspx:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE jsp:root [<!ENTITY nbsp " ">]>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	xmlns:f="http://java.sun.com/jsf/core" 
	xmlns:c="http://java.sun.com/jstl/core"
	version="2.0">

	<ui:composition template="/pages/template/defaultTemplate.jspx">
	
  	<ui:define name="corpo">
        <t:messages/>
        <h:form id="frmJogador">
        <table width="100%" height="100%">
          <tr>
            <td valign="top" align="left">

                <SPAN> <t:outputText value="Filtro:"/></SPAN>
                <table style="border: 1px solid black; width:100%">
                   <tr>
                     <td style="width:39%">
                      <t:outputText value="Nome Jogador:"/>
                       
                      <t:inputText id="nomeJogador" value="#{manterJogadorBean.nomeJogadorFiltro}"></t:inputText>
                     </td>
                     <td>
                      <t:outputText value="Ativo:"/>
                       
                      <t:selectBooleanCheckbox id="chkAtivo" value="#{manterJogadorBean.ativoJogadorFiltro}"></t:selectBooleanCheckbox>
                     </td>
                   </tr>                
                   <tr>
                     <td colspan="2">
                       
                       <t:commandButton value="Pesquisar" actionListener="#{manterJogadorBean.pesquisar}" />
                     </td>
                  </tr>
                </table> 

                <br />              
              
			              <t:selectManyCheckbox id="chkSelecaoRegistro"
			                                    layout="spread"
						                        forceId="true"  
						                        forceIdIndex="false"  
						                        immediate="true"
						                        value="#{manterJogadorBean.selecaoRegistro}">
							
								 <f:selectItems value="#{manterJogadorBean.gridJogadoresSelectItens}" />
			              </t:selectManyCheckbox>
		    	
               <t:dataTable var="current"  id="tblJogador" border="1" width="90%"
                            value="#{manterJogadorBean.gridJogadores}" 
                            rowIndexVar="index">
                   <t:column headerstyle="text-align:left; width: 5%;">
                     
                      <f:facet name="header" >
                     
                        <h:panelGroup>
                           
                        </h:panelGroup>
                         
                      </f:facet>


                     <t:checkbox for=":frmJogador:chkSelecaoRegistro" index="#{index}" />
                    
                   </t:column>

                   <t:column  headerstyle="text-align:left; width: 90%;">
                      <f:facet name="header">
                       <h:outputText value=" Nome do Jogador" />
                      </f:facet>
                      <t:outputText value="#{current.nome}"/>
                   </t:column>

                   <t:column headerstyle="text-align:left; width: 5%;">
                      <f:facet name="header">
                       <h:outputText value="Ativo" /> 
                      </f:facet>

                      <t:outputText value="Sim" rendered="#{current.ativo}"/> 
                      <t:outputText value="Não" rendered="#{!current.ativo}"/> 
                      
                   </t:column>

               </t:dataTable>

            </td>
          </tr>
        </table> 
        </h:form>
		</ui:define>
	</ui:composition>

</jsp:root>

ManageBean:

package com.futebol.view.managebeans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlSelectManyCheckbox;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;

import com.futebol.model.Util;
import com.futebol.model.ejb.serviceif.IJogadorServiceLocalEJB;
import com.futebol.model.util.EJB;
import com.futebol.model.util.ServiceLocator;
import com.futebol.model.vo.JogadorVO;
import com.futebol.model.vo.filtro.JogadorFiltro;

public class ManterJogadorMB extends ManageBeanAb {
	private String nomeJogadorFiltro;
	private Boolean ativoJogadorFiltro = true;
	private List<Integer> selecaoRegistro;
	private String selecaoRegistroString;
	private List<SelectItem> gridJogadoresSelectItens = new ArrayList<SelectItem>(0);;
	private List<JogadorVO> gridJogadoresList = new ArrayList<JogadorVO>(0);
	private ListDataModel gridJogadores = new ListDataModel();
	private SelectItemGroup group = new SelectItemGroup();
	
	private HtmlSelectManyCheckbox chkSelecaoRegistro;
	
	public ManterJogadorMB(){
	}
	
	public String getSelecaoRegistroString() {
		return selecaoRegistroString;
	}

	public void setSelecaoRegistroString(String selecaoRegistroString) {
		this.selecaoRegistroString = selecaoRegistroString;
	}

	public SelectItemGroup getGroup() {
		return group;
	}

	public void setGroup(SelectItemGroup group) {
		this.group = group;
	}

	public String getNomeJogadorFiltro() {
		return nomeJogadorFiltro;
	}
	public void setNomeJogadorFiltro(String nomeJogadorFiltro) {
		this.nomeJogadorFiltro = nomeJogadorFiltro;
	}
	public Boolean getAtivoJogadorFiltro() {
		return ativoJogadorFiltro;
	}
	public void setAtivoJogadorFiltro(Boolean ativoJogadorFiltro) {
		this.ativoJogadorFiltro = ativoJogadorFiltro;
	}
	public List<Integer> getSelecaoRegistro() {
		return selecaoRegistro;
	}
	public void setSelecaoRegistro(List<Integer> selecaoRegistro) {
		this.selecaoRegistro = selecaoRegistro;
	}
	public List<SelectItem> getGridJogadoresSelectItens() {
		return gridJogadoresSelectItens;
	}
	public void setGridJogadoresSelectItens(
			List<SelectItem> gridJogadoresSelectItens) {
		this.gridJogadoresSelectItens = gridJogadoresSelectItens;
	}

	public ListDataModel getGridJogadores() {
		return gridJogadores;
	}

	public void setGridJogadores(ListDataModel gridJogadores) {
		this.gridJogadores = gridJogadores;
	}

	public HtmlSelectManyCheckbox getChkSelecaoRegistro() {
		return chkSelecaoRegistro;
	}

	public void setChkSelecaoRegistro(HtmlSelectManyCheckbox chkSelecaoRegistro) {
		this.chkSelecaoRegistro = chkSelecaoRegistro;
	}

	public void validarCheck(FacesContext context, UIComponent component,Object param){
		System.out.println("sadasd");
	}

	
	public List<JogadorVO> getGridJogadoresList() {
		return gridJogadoresList;
	}

	public void setGridJogadoresList(List<JogadorVO> gridJogadoresList) {
		this.gridJogadoresList = gridJogadoresList;
	}

	public void pesquisar(ActionEvent ev){
		try {
			   IJogadorServiceLocalEJB lJogadorService = 
				   (IJogadorServiceLocalEJB)ServiceLocator.getServico(EJB.JOGADOR_EJB_LOCAL);
			   
			   JogadorFiltro lFiltro = new JogadorFiltro();
			   if(!Util.isEmptyOrNull(this.getNomeJogadorFiltro())){
				   lFiltro.setNome(this.getNomeJogadorFiltro());
			   }
			   if(!Util.isEmptyOrNull(this.getAtivoJogadorFiltro())){
				   lFiltro.setAtivo(this.getAtivoJogadorFiltro());
			   }
			   
	 		  List<JogadorVO> lCollJogadores =  lJogadorService.obterPorFiltro(lFiltro);

	 		  if(!Util.isEmptyOrNull(lCollJogadores)){
	 			 this.setGridJogadoresList(lCollJogadores);
	 			 this.setGridJogadores(new ListDataModel(lCollJogadores));
	 			 this.gridJogadoresSelectItens = new ArrayList<SelectItem>(lCollJogadores.size());
	 			 SelectItem lSelectItem   = null;
	 			 for(JogadorVO current : lCollJogadores){
	 				lSelectItem = new SelectItem(current.getCodJogador().toString(),"");
	 				this.gridJogadoresSelectItens.add(lSelectItem);
	 			 }
	 			  
	 			
	 		  }
	 		  
			} catch (Exception e) {
				FacesContext.getCurrentInstance().addMessage("erro", new FacesMessage(e.getMessage()));
			}
			
		
	}
	
	public String pesquisar(){
		try {
			   IJogadorServiceLocalEJB lJogadorService = 
				   (IJogadorServiceLocalEJB)ServiceLocator.getServico(EJB.JOGADOR_EJB_LOCAL);
			   
			   JogadorFiltro lFiltro = new JogadorFiltro();
			   if(!Util.isEmptyOrNull(this.getNomeJogadorFiltro())){
				   lFiltro.setNome(this.getNomeJogadorFiltro());
			   }
			   if(!Util.isEmptyOrNull(this.getAtivoJogadorFiltro())){
				   lFiltro.setAtivo(this.getAtivoJogadorFiltro());
			   }
			   
	 		  List<JogadorVO> lCollJogadores =  lJogadorService.obterPorFiltro(lFiltro);

	 		  if(!Util.isEmptyOrNull(lCollJogadores)){
	 			  this.setGridJogadores(new ListDataModel(lCollJogadores));
	 			  this.gridJogadoresSelectItens = new ArrayList<SelectItem>(lCollJogadores.size());
	 			  for(JogadorVO current : lCollJogadores){
	 				 this.gridJogadoresSelectItens.add(new SelectItem(current.getCodJogador(),""));
	 			  }
	 		  }
	 		  
			   return "pesquisar";
			} catch (Exception e) {
				
			}
			
			return "falha";
	}
	
}

a pagina é renderizada, mas ao selecionar um checkbox ocorre um validation error, porem se eu usar o <f:selectItem itemValue=“valor” itemLabel=“label”/> ao inves do <f:selectItems/> o mesmo funciona perfeitamente, mas como se tratam de dados dinamicos não posso usar o selectItem.

Não sei se alguem aqui ja passou por isso mas creio que seja um BUG pois quando utilizo o radioButton, funciona sem problemas

Obbrigado

Eu não uso tomahawk por uns 2 anos, então só para ver uma coisa, faz um teste usando h:selectManyCheckbox.

luBS

eu não posso usar o h:selectManyCheckbox pois preciso usar o t:checkbox dentro da grid e alguns atributos como forceId forceIndex presente somente no tomahawk

valeu

Mas é melhor mesmo você nem fazer direto no seu sistema, eu queria que vc fizesse um exemplo extremamente simples, bem besta usando apenas o componente que você acha que não esta funcionando, no caso t:selectManyCheckbox. Cria um novo managed bean colocando uma lógica simples para popular um SelectItem[] (popula uns 3 itens na mão mesmo), depois uma página que só tem isso (um t:selectManyCheckbox ou h:selectManyCheckbox), fazendo isso você isola num código separado apenas a parte que você está com erro, além de gerar bem menos código para analisar e testar, nós podemos simular aqui, pois não precisamos entender ou ler toda sua lógica.

Cria um exemplo como os que tem:
http://www.exadel.com/tutorial/jsf/jsftags-guide.html

valeu!