Ajuda com SelectManyCheckBox

5 respostas
J

Galera,

estou tentando pegar os valores de vários checkbox em uma tabela. Já tentei de várias formas e nada.

Tentei fazer um binding mas o mesmo vem null.

Se alguém puder me ajudar.

Segue os códigos:

<t:dataTable id="classeUsoTable"  summary="#{i18n['br.com.petrobras.crud.datatable.summary']}"
   				 	            	 first="#{classeUsoManagedBean.classeUsoJsfPagination.firstItemIndex}"
                    				 rows="#{classeUsoManagedBean.classeUsoJsfPagination.pageSize}"
                    				 sortColumn="#{classeUsoManagedBean.classeUsoJsfPagination.sortByField}"
                    				 sortAscending="#{classeUsoManagedBean.classeUsoJsfPagination.sortAscending}"
                    				 value="#{classeUsoManagedBean.classeUsoDataModel}"
                    				 rowOnMouseOver="this.style.backgroundColor='#F1F1F1'"
		            				 rowOnMouseOut="this.style.backgroundColor='#E1E0E0'"
		            				 headerClass="bgTabela01" 
		            				 rowClasses="bgTabela02" 
    						       	 newspaperColumns="1" 	
    						       	 newspaperOrientation="horizontal"
    						       	 cellpadding="3" cellspacing="1"
		            				 columnClasses="colunaCheckBoxClasseUso, colunaCodigoClasseUso, colunaDescricaoClasseUso"
	            				 	 width="100%"
	            				 	 var="classeUso"
	            				 	 binding="#{classeUsoManagedBean.dataTable}"
	            				 	 renderedIfEmpty="false">          
							
							<h:column>	   		 					   				
					   				<t:selectManyCheckbox id="identificador"  binding="#{classeUsoManagedBean.codigo}" value="#{classeUsoManagedBean.teste}">
						   				<f:selectItem itemValue="#{classeUso.id}" itemLabel="" itemDisabled="#{not classeUsoManagedBean.desabilitaBotao}"/>
					   					
					   				</t:selectManyCheckbox>	
					   						
						    </h:column>
private HtmlSelectManyCheckbox codigo;
    
 private Integer[] teste;

Quando eu faço um Debug e tento visualizar os dados, vem todos como null ou vazio.

public final String processDelete() {
		
		System.out.println(codigo.getSelectedValues());
		System.out.println(teste);
		return processSearch();
	}

Abs
Alexandre

5 Respostas

D

Tenta fazer uma função javascript pra pegar o valor do teu t:selectManyCheckbox. Só não lembro se o value retorna int[] ou String[], mas eu acho que é um String[] com os checkbox selecionados.

acho que fica algo assim:

var selecionados = document.getElementById(“identificador”).value;

J

DuduCordeiro,

na minha solução não pode ter JavaScript. Não teria como fazer isso apenas usado os componentes e o MB???

VLW

D

Tenta usar ou só o binding ou só o value, não os dois ao mesmo tempo. E depois com o binding coloca um breakPoint no teu método setCodigo(HtmlSelectManyCheckbox codigo){…} e abre a variavel código pra ver se os valores que vc quer estão lá dentro. Se não der certo tenta com o value no teu componente e na tua classe controladora, tenta fazer um cast pra String[] ao invés de int[]. Depois diz ai o resultado dos testes.

J

duduCordeiro,

Coloquei um breakpoint no set e vi que o valor estava chegando mas não estava sendo salvo. Coloquei um List para salvar e funcionou. Muito obrigado cara.

Takeshi91

Vincule uma value do tipo ArrayList à selectManyCheckBox

Conforme vc for selecionando, as Strings das ItemValue serão adicionadas à ArrayList

Espero ter ajudado!

Criado 29 de março de 2011
Ultima resposta 31 de mar. de 2011
Respostas 5
Participantes 3