Como utilizar list para campos input - JSF

9 respostas
S

Como faço para obter o valor dos input com o mesmo name para uma lista no manager bean ?

<h:dataTable                  
                   var="campo"
                   value="#{cadastraSolicitacaoBean.listaCampo}"
                   styleClass="table"
                   rowClasses="primeiro,segundo">
               
                   <h:column>                       
                        <f:verbatim><h:outputText value="#{campo.tipoCampoSolicitacao.nome}"/></f:verbatim>                   
                   </h:column>
                   
                   <h:column>                                                
                        <h:inputText value="#{campo.valor}" />                                                                           
                   </h:column>
                   
               </h:dataTable>

9 Respostas

S

Alguém não tem alguma ideia de como fazer ?

L

Descreva mais especificamente sua situação … para podermos analisar !!!

S

Tenho campos do tipo input text criados dinamicamente apartir de uma lista passada pelo meu ManagedBean, exibição acima.
O meu problema é que não consigo pegar os valores dos input text, através do ManagedBean para adicionar em outra lista.

T
sfing:
Como faço para obter o valor dos input com o mesmo name para uma lista no manager bean ?
<h:dataTable                  
                   var="campo"
                   value="#{cadastraSolicitacaoBean.listaCampo}"
                   styleClass="table"
                   rowClasses="primeiro,segundo">
               
                   <h:column>                       
                        <f:verbatim><h:outputText value="#{campo.tipoCampoSolicitacao.nome}"/></f:verbatim>                   
                   </h:column>
                   
                   <h:column>                                                
                        <h:inputText value="#{campo.valor}" />                                                                           
                   </h:column>
                   
               </h:dataTable>

Encontrou uma solução para o seu problema???

G

vc pode passar um parametro com o valor do imput, e recupera-lo atravez d binding no seu mb.

M

Nao sei se ja resolveram mas eu tenho uma solução que resolveu pra mim, segue abaixo:

No JSF:

&lt;f:view&gt; 
        &lt;h:form&gt; 
                &lt;h:dataTable value="#{people.list}" var="row"&gt; 
                        &lt;h:column&gt; 
                                &lt;f:facet name="header"&gt; 
                                        &lt;h:outputText value="#" /&gt; 
                                &lt;/f:facet&gt; 
                                &lt;h:selectBooleanCheckbox value="#{row.selected}" /&gt; 
                        &lt;/h:column&gt; 
                        &lt;h:column&gt; 
                                &lt;f:facet name="header"&gt; 
                                        &lt;h:outputText value="First Name" /&gt; 
                                &lt;/f:facet&gt; 
                                &lt;h:inputText value="#{row.firstname}" /&gt; 
                        &lt;/h:column&gt; 
                        &lt;h:column&gt; 
                                &lt;f:facet name="header"&gt; 
                                        &lt;h:outputText value="Last Name" /&gt; 
                                &lt;/f:facet&gt; 
                                &lt;h:inputText value="#{row.lastname}" /&gt; 
                        &lt;/h:column&gt; 
                        &lt;f:facet name="footer"&gt; 
                                &lt;h:panelGroup&gt; 
                                        &lt;h:commandButton value="Add Row" action="#{people.addPerson}" /&gt; 
                                        &lt;h:commandButton value="Delete Selected" 
                                                action="#{people.deleteSelected}" /&gt; 
                                        &lt;h:commandButton value="Finish" action="#{people.finish}" /&gt; 
                                &lt;/h:panelGroup&gt; 
                        &lt;/f:facet&gt; 
                &lt;/h:dataTable&gt; 
        &lt;/h:form&gt; 
&lt;/f:view&gt;

People bean:

public class People implements Serializable { 
 
    private static final long serialVersionUID = 1L; 
 
    private List&lt;Person&gt; people = new ArrayList&lt;Person&gt;(); 
 
    public People() { 
        // initialise with one entry 
        people.add(new Person()); 
    } 
 
    public List&lt;Person&gt; getList() { 
        return people; 
    } 
 
    public String addPerson() { 
        people.add(new Person()); 
        return null; 
    } 
 
    public String deleteSelected() { 
        Iterator&lt;Person&gt; entries = people.iterator(); 
        while (entries.hasNext()) { 
                Person person = entries.next(); 
                if (person.isSelected()) { 
                        entries.remove(); 
                } 
        } 
        return null; 
    } 
 
    public String finish() { 
        System.out.println(people); 
        return "someNavigationRule"; 
    } 
 
}

A classe Person:

public class Person implements Serializable { 
 
    private static final long serialVersionUID = 1L; 
 
    private String firstname; 
    private String lastname; 
    private transient boolean selected = false; 
 
    public String getFirstname() { 
        return firstname; 
    } 
 
    public void setFirstname(String firstname) { 
        this.firstname = firstname; 
    } 
 
    public String getLastname() { 
        return lastname; 
    } 
 
    public void setLastname(String lastname) { 
        this.lastname = lastname; 
    } 
 
    public boolean isSelected() { 
        return selected; 
    } 
 
    public void setSelected(boolean selected) { 
        this.selected = selected; 
    } 
 
}

No faces-config.xml:

&lt;managed-bean&gt; 
        &lt;managed-bean-name&gt;people&lt;/managed-bean-name&gt; 
        &lt;managed-bean-class&gt;addmultiple.People&lt;/managed-bean-class&gt; 
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt; 
&lt;/managed-bean&gt;

Eu nao quis usar o escopo de session e sim de request, para isso precisei usar o keepAlive para a coisa funcionar no meu sistema que tá todo ajaxado pelo richfaces.
Quem nao souber fazer o keepalive me da um toque que eu posto.
abs

Q

Grande! vc achou uma solução!!??
Estou com o mesmo problema aqui!
Mas tenho um xml com uma serie de dados e sera difícil adicionar em uma tabela cada item!
Qualquer ajuda é bem vida!

M

opa! sim… a solução q encontrei foi essa aí acima…
mas nao entendi a sua duvida…
abs

Q

blz mmartinsrj!
Entendi sua idéia! Deu certinho o que queria fazer.
Obrigado

Criado 30 de abril de 2008
Ultima resposta 24 de fev. de 2010
Respostas 9
Participantes 6