[Resolvido até que enfim :-)] Duvida

3 respostas
eullerbd

Pessoal , estou a dias com um grande problema, preciso encontrar uma maneira de solucionar e conto com a ajuda de vocês.

Possuo um dataTable

<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  value="#{name.id}"  />
                                            </h:column>
                                            
                                            <h:column>
                                                <f:facet name="header">
                                                    <h:outputText value="Nome"></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>

Neste dataTable possuo um elemento preciso recuperar em meu bean os checkboxes selecionados, como eu poderia recuperar este valor e passa-lo para um ArrayList? Se alguem poder ajudar, me indicar algum artigo, revirei a net procurando algo sobre, mas nao encontrei,vi que esta é uma duvida da maioria dos iniciantes. Por favor me ajudem. Obrigado

3 Respostas

T

http://blogs.sun.com/winston/entry/multiple_selection_table1
isto pode te ajudar… eh para woodstock, nao seis e havera algum impecilo por causa disso

eullerbd

Pesoal, vou postar aqui no GUJ a solução, visto que vi que tem muita gente passar por este problema. O blog no qual consegui a solução foi em

http://blogs.sun.com/basler/entry/jsf_1_2_checkbox_in

Meu dataTable ficou da seguinte forma

<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>
                                                
                                               <input type="checkbox" name="mapSelectedItems" value="<h:outputText  value='#{name.id}'/>"/>    
                                            </h:column>
                                            
                                            <h:column>
                                                <f:facet name="header">
                                                    <h:outputText value="Nome"></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>

Faces Config

<managed-bean>
 <managed-bean-name>MapBean</managed-bean-name>
 <managed-bean-class>
 controle.ControlePlano
 </managed-bean-class>
 <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

e meu metodo que me retorna uma String[] com os valores que foram selecionados para a exclusão

public String delete() {

       
        FacesContext context = FacesContext.getCurrentInstance();
        ValueExpression vex = context.getApplication().getExpressionFactory().
        createValueExpression(context.getELContext(), "#{paramValues.mapSelectedItems}", String[].class);

        String[] itemx = (String[]) vex.getValue(context.getELContext());
        
        if (itemx != null) {
            itemIds = itemx;
        }
        for(String obj: itemx)
        {
            System.out.println(obj);
        }
        return "del";
    }

:D :D :D

T

Uma solução que uso muito, é criar uma classe de interface, com um atributo boolean que servirá para controlar o seu selectBooleanCheckbox e o outro atributo seria uma classe por exemplo que encapsula o id, nome e o valor conforme postou o seu datatable.

Na classe que controla sua jsp vc cria uma lista dessa classe de interface, referencia o datatable a essa lista, e vai criando as referencia dos componentes de todos os elementos do datatable conforme a classe de interface.

Criado 3 de junho de 2008
Ultima resposta 3 de jun. de 2008
Respostas 3
Participantes 3