Selecionar todos - Check Box

Boa tarde

Gostaria de saber como eu faço pra selecionar todos os checkbox utilizando JSF?

Essa página JSP, baixei uma funcão em javascript mas não consigo utilizá direito.

Ou seja, eu preciso passar essa função para o JSF, utilizando dataTable, mas não tô sabendo fazer…

agradeço a ajuda!


<h:dataTable border="1" value="#{MgrVisitante.visitantes}"  var="visitante">

      <h:column >
		<f:facet name="header">
		</f:facet>
			<h:selectBooleanCheckbox id="UIDL[]"/>
	</h:column>
      
	<h:column >
		<f:facet name="header">
			<h:outputText value="ID" />
		</f:facet>
			<h:outputText value="#{visitante.idVisitante}"/>
	</h:column>
	
	<h:column >
		<f:facet name="header">
			<h:outputText value="Nome" />
		</f:facet>
			<h:outputText value="#{visitante.nome}"/>
	</h:column>

    </h:dataTable>

E essa é a funcão em javascript e um form que funcionam perfeitamente

<script language=javascript>
<!--
cont = 0;
function CheckAll() {
   for (var i=0;i<document.formulario.elements.length;i++) {
     var x = document.formulario.elements[i];
     if (x.name == 'UIDL[]') {
x.checked = document.formulario.selall.checked;
}
}
if (cont == 0){   
var elem = document.getElementById("checar");
elem.innerHTML = "Desmarcar todos";
cont = 1;
} else {
var elem = document.getElementById("checar");
elem.innerHTML = "Marcar todos";
cont = 0;
}

}
//-->
</script>
</head>

<body>

<form name="formulario">

<input type=checkbox name="selall" onClick="CheckAll()">
<span id="checar">Marcar todos</span><br>
<input type=checkbox name="UIDL[]" value="1">Opção 1<br>
<input type=checkbox name="UIDL[]" value="2">Opção 2<br>
<input type=checkbox name="UIDL[]" value="3">Opção 3<br>
<input type=checkbox name="UIDL[]" value="3">Opção 3<br>

</form>

Sei que o tópico é antigo mas pode ajudar quem esta começando, abaixo fiz um exemplo de marcar e descarmar todos os h:selectBooleanCheckbox,
Abaixo detalha a coluna onde vou ter meus checkBox em uma DataTable

[code] rich:column
<f:facet name=“header”>
<h:panelGroup layout=“block”>

				    <table style="color:white;"> 
				    	<tr>
				    		<td valign="top"> 
							<h:selectBooleanCheckbox value="true" id="t0" onclick="checkAll( this.id, this.checked );" />
						</td>
						<td valign="top">
							<h:outputText value="Todos"/>	      					
						</td>
					</tr>
				</table>
			</h:panelGroup>
		</f:facet>
	<h:selectBooleanCheckbox id="t1" />
</rich:column>

[/code]

E abaixo segue o javascript utilizado para marcar e desmarcar todos os checks:

	<script type="text/javascript">
	  //<![CDATA[
		// RichFaces datatable select all -checkbox
		     function checkAll( inputId, state ){
			      
		       var idNew = inputId.substr(0, inputId.lastIndexOf(':'));
    		       var idtab = idNew;
		       var elemetos = document.getElementById(idtab );
		       var inputs = elemetos.getElementsByTagName('input');

			   for (var i = 0; i <= inputs.length; i++){
		         var input = inputs[i];
		         if (input != undefined) {
		           if( input.getAttribute('type') == 'checkbox' && state){
			      	
			             input.checked=true;
		           } else{
			         	
		             input.checked=false;
		          
		           }
		         }
		       }
		     }
		     //]]>
	   </script>

Pode ser que ajude alguem ai…

Abracs!

ÓTIMO, PARABÉNS PELA CONSCIÊNCIA, SOU INICIANTE E BUSQUEI MUITO POR ESSA SOLUÇÃO. ELIMINOU UM PROBLEMA QUE TINHA AQUI.
MUITO OBRIGADO, MUITO OBRIGADO MESMO!!!

Opa, beleza… essa era a intenção que ajudasse alguem.

E se a minha tabela tem um rich:datascroller não seleciona os itens da outra página…

Alguém pode ajudar, reaproveitando o script citado pelo gustavoliveira.

Obrigado

Tenho a mesma dúvida que o rapaz acima, as outras páginas não são ticadas. Alguém sabe o que fazer?

abraço