Problemas com selectManyCheckbox (jsf)

5 respostas
F

pessoal, estou tentando colocar um <h:selectManyCheckbox> dentro de um dataTable, porém sempre da erro ao executar.
estou com dúvidas em relação ao atributo value do selectManyCheckbox e o value do f:selectItem.

O código do produto passado é um Objeto, nesse caso é um Integer. Não sei como faço para pegar os valores selecionados.

Abaixo é a tabela
&lt;h:dataTable id="tabelaProdutos" value="#{selecionarItens.produtos}" var="produto"&gt;
 
                        &lt;h:column &gt;

                            &lt;f:facet name="header"&gt;
                                &lt;h:outputText value="Selecione"/&gt;
                            &lt;/f:facet&gt;

                            &lt;h:selectManyCheckbox id="itens" value="#{selecionarItens.itensSelecionados}" layout="pageDirection"&gt; 
                                &lt;f:selectItem value="#{produto.produtocodProduto.codProduto}" /&gt; 
                            &lt;/h:selectManyCheckbox&gt;

                        &lt;/h:column&gt;

                    &lt;/h:dataTable&gt;
o managedBean
public class SelecionarItens {

    ProdutosEscolhidos produtosEscolhidos = new ProdutosEscolhidos();
    List&lt;String&gt; itensSelecionados = new ArrayList();
            
    public SelecionarItens() {
        
    }

    public ProdutosEscolhidos getProdutosEscolhidos() {
        return produtosEscolhidos;
    }

    public void setProdutosEscolhidos(ProdutosEscolhidos pe) {
        this.produtosEscolhidos = pe;
    }
    
    public List&lt;ItensCotados&gt; getProdutos(){
        List&lt;ItensCotados&gt; itensCotados = null;
        try{
            ItensCotadosDAO ic = new ItensCotadosDAOImpl();
            itensCotados = ic.selectAll();         
        }catch(Exception e){
            
        }
        return itensCotados;
    }

    public List&lt;String&gt; getItensSelecionados() {
        return itensSelecionados;
    }

    public void setItensSelecionados(List&lt;String&gt; itensSelecionados) {
        this.itensSelecionados = itensSelecionados;
    }  
}

Se alguém puder me ajudar...

5 Respostas

M

Já conhece PrimeFaces?

Com o prime, você facilmente faria isso usando uma dataTable com checkbox.

Dê uma olhada, recomendo:

http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf

F

sim, conheço o primefaces, mas dessa vez não posso usar, preciso fazer isso sem primefaces. mas valeu pela dica.

danillonc

Cade o seu itemLabel e itemValue do f:selectItems?

está faltando eles…

F

sim, mas se eu colocar o itemLabel, vai aparecer o o checkbox seguido do nome do parâmetro na tela. eu gostaria que aparece apenas o checkbox.

M

Você pode colocar um atributo transient na classe modelo (Produto) que identifique se o objeto está selecionado.

Algo como:

@Entity
public class Produto{

//outros atributos da classe

@Transient
private boolean selecionado;

//getters e setters

}

Depois faça referência ao atributo no checkbox. Você pode percorrer assim a lista e identificar os itens selecionados.

Criado 20 de outubro de 2012
Ultima resposta 22 de out. de 2012
Respostas 5
Participantes 3