[CONCLUIDO] Marcar Todos com JSF

Boa tarde galera,

tenho uma tabela que vou colocar em cada linha um checkbox, com o botao de “marcar todas” e “desmarcar todas”. para dps levar todos os dados para uma outra tela…

como posso fazer isso?

No action do checkbox você pode fazer um for na lista que é exibida e marcar como true ou false a propriedade que está linkada no value do checkbox.

Também tive que fazer isso alguns dias atrás.

Até.

Cara, nao entendi direito o que quiz diz… pode explicar com exemplos?

Esta usando qual versão do JSF ? Esta usando alguma biblioteca de componentes ?

Caso seja JSF 1.2 e não estiver usando RichFaces ou outro qualquer, recomendo usar um javascript.

Senão dá pra fazer por ajax.

Segue meu bean.

public class Pessoa {
    private Boolean marcado = false;
    private String nome;
    private String sobrenome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }

    public Boolean getMarcado() {
        return marcado;
    }

    public void setMarcado(Boolean marcado) {
        this.marcado = marcado;
    }
}

Meu managed bean com escopo request

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

public class PessoaMB {

    private List<Pessoa> listPessoa;

    public PessoaMB() {
        Pessoa p;
        this.listPessoa = new ArrayList<Pessoa>();
        
        p = new Pessoa();
        p.setNome("teste");
        p.setSobrenome("123");
        this.listPessoa.add(p);

        p = new Pessoa();
        p.setNome("teste2");
        p.setSobrenome("123456");
        this.listPessoa.add(p);

        p = new Pessoa();
        p.setNome("teste3");
        p.setSobrenome("125345");
        this.listPessoa.add(p);
    }

    public List<Pessoa> getListPessoa() {
        return listPessoa;
    }

    public void setListPessoa(List<Pessoa> listPessoa) {
        this.listPessoa = listPessoa;
    }

    public String marcarTodos(){
        for (Pessoa pessoa : listPessoa) {
            pessoa.setMarcado(true);
        }
        return null;
    }
}

Código da minha página JSF

<h:form>
    <h:commandLink action="#{pessoaMB.marcarTodos}" value="Mercar todos"/>
    <h:dataTable value="#{pessoaMB.listPessoa}" var="pessoa">
        <h:column>
            <h:selectBooleanCheckbox value="#{pessoa.marcado}"/>
        </h:column>
        <h:column>
            <h:outputText value="#{pessoa.nome}"/>
        </h:column>
        <h:column>
            <h:outputText value="#{pessoa.sobrenome}"/>
        </h:column>
    </h:dataTable>
</h:form>

Caso tiver dúvidas estamos ai…

Valeu

valeu mano robsonperassoli

Vou implementar aqui e retorno… se der certo coloco concluido…

abraços

Galera consegui resolver desse modo:

Usando JavaScript:

[code]
function selecionar_tudo(table1, checkName){
selecionarChecks(table1, checkName, true);
}

function deselecionar_tudo(table1, checkName){
selecionarChecks(table1, checkName, false);
}

function selecionarChecks(table1, checkName, select) {
elems = table1.getElementsByTagName(“input”);
for (i=0;i<elems.length;i++) {
elem = elems[i];
if(elem.type && elem.name) {
if (elem.type == “checkbox” && elem.name == checkName) {
elem.checked=select;
}
}
}
}[/code]

e no JSF:

&gt;&lt;webuijsf:hyperlink id="visualizarLink3" onClick="selecionar_tudo(document.getElementById('form1:table1:_table'), 'selectRow'); return false;" style="left: 75px; top: 86px; position: absolute" text="Marcar Todos"/&gt;
                        &lt;webuijsf:hyperlink id="visualizarLink4" onClick="deselecionar_tudo(document.getElementById('form1:table1:_table'), 'selectRow'); return false;" style="left: 150px; top: 86px; position: absolute" text="Desmarcar Todos"/&gt;