[duvida jsf iniciante] recuperar checkbox selecionados no bean

8 respostas
eullerbd

Pessoal, tenho a seguinte duvida, tenho uma listagem de planos e seleciono os mesmos por checkbox, como funciona meu sistema o usuário seleciona o plano e clica em editar ou excluir.

<h:commandLink action="#{dados.recuperarPlano}" id="actEdit" styleClass="disable" onclick="edit('editPlano',this)" >Editar</h:commandLink>

Ao clicar no link o form é executado e acionado o método recuperarPlano do meu bean, a duvida é como faço para recuperar no bean os valores que foram selecionados?

Alguem poderia me dar um exemplo?

Desde já agradeço.

8 Respostas

Cabazzo

Na tag do seu checkbox, a propriedade “value” tem estar uma propriedade do seu bean (que contenha get e set).
Dentro do seu método é só vc usar a propriedade do bean. Pq o jsf vai primeiro “setar” o valor antes de rodar o método. Ajudei??? 8)

eullerbd

sim, esta parte de como ele seta eu entendi, fiz isso no meu metodo cadastrar, é tranqüilo. Mas como fazer para recuperar varios valores, sei que devo usar um ArrayList, mas ai estou com duvidas de como deve ser implementado. :?

Cabazzo

Vc cria uma propriedade tipo: “private List selectedItems” e na tag
<h:selectManyCheckbox value="#{seuBean.selectedItems}">
<f:selectItem itemLabel=“id” itemValue=“id” />…

Vc pode usar a tag <f:selectItems> e setar o binding para um List de SelectItem.

private List<SelectItens> selectItensTabela


public void carregaSelectItensTabela(){
        getSelectItensTabela().add(new SelectItem("",""));
        for(int i=0; i < getLocateTabelas().size(); i++){
          getSelectItensTabela().add(new SelectItem(getLocateTabelas().get(i).getCodigo(),getLocateTabelas().get(i).getCodigo() + " - " + getLocateTabelas().get(i).getDescricao()));
        }
    }

e na tag :

<f:selectItems value="#{sistema.selectItensTabela}" />
eullerbd

Os dados eu já estou trazendo perfeitamente, a minha duvida é como pegar os valores no bean.

Exemplo.

Preciso excluir todos os checkbox selecionados.

Como ficaria meu metodo de exclusao? está é a minha duvida.

eullerbd

Alguém? :roll:

Cabazzo

Mostra como vc está fazendo. é dentro de uma dataTable?

eullerbd

Está dentro de um dataTable sim, segue abaixo o mesmo. Obrigado

<h:dataTable id="tabela" styleClass="tableList" border="1" value="#{dados.listaDePlano}" var="name">
                                            
                                            <h:column>
                                                <f:facet name="header">
                                                    <h:outputText value="ID"></h:outputText> 
                                                </f:facet>
                                               
                                                <h:selectBooleanCheckbox  onclick="check(this)" value="#{name.nome}"/>
                                            </h:column>
                                            
                                            <h:column>
                                                <f:facet name="header">
                                                    <h:outputText value="#{name.id}"></h:outputText> 
                                                </f:facet>
                                                <h:outputText value="#{name.nome}"/>
                                            </h:column>
                                            
                                            <h:column>
                                                <f:facet name="header">
                                                    <h:outputText value="Valor"></h:outputText> 
                                                </f:facet>
                                                <h:outputText value="#{name.valor}">
                                                    <f:convertNumber type="currency"/>
                                                </h:outputText>
                                            </h:column>
                                            
                                            
                                        </h:dataTable>
Cabazzo

Olha isso que vc está fazendo eu faço diferente pq uso o Richfaces…
Mas acho que vc deveria criar uma propriedade do tipo boolean no seu objeto e este colocar na tag <h:selectBooleanCheckbox > aí no seu método vc daria um loop na List listaDePlano e aí identificava os que estãoi marcados como true e efetuava o método que vc quer.

Criado 28 de maio de 2008
Ultima resposta 30 de mai. de 2008
Respostas 8
Participantes 2