JSF 2 + Primefaces + Campos de inputs dinâmicos

7 respostas
C

Galera do mau!!!

Estou tentando fazer um form que pode conter campos ilimitados (esses campos devem estar ‘bindados’ em uma variavel ‘arrayList’ do managed bean) algo assim:

&lt;h:outputText value="Título"/&gt; <br/>
                    &lt;h:inputText value="#{teste.titulo}"/&gt;

package Temp;

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Teste {


    private List titulo = new ArrayList();

    public List getTitulo() {
        return titulo;
    }

    public void setTitulo(List titulo) {
        this.titulo = titulo;
    }
    
}

Minha duvida é como fazer o campo novo aparecer e estar ‘bindado’ na minha variavel titulo do tipo arrayList

alguem ja fez algo assim:
[]

7 Respostas

D

Já tentou usar o operador []. Ele funciona na EL mas não sei se ele vai resolver o seu caso. Outra idéia que eu usária, mas apenas após tentar a primeira, seria criar um componente custom para implementar isso.

C

vc diz, usar o operador no html?

assim?

<h:outputText value="Título"/> <br/>  
 <h:inputText value="#{teste.titulo[]}"/>
C

supondo que eu tenha um array preenchido:

colors = new String[4]; colors[0] = "Black"; colors[1] = "White"; colors[2] = "Green"; colors[3] = "Red";

se no html eu fizer isso:

&lt;h:outputText value="cores"/&gt; <br/> &lt;h:inputText value="#{teste.colors[]}"/&gt;

ele vai reconhecer que tem 4 valores e printar 4 inputs preenchidos??

D

Não, eu quero dizer assim:

<h:inputText value="#{bean.array[0]}" />

Você ainda pode combinar o operador com um ui:repeat para criar os campos dinâmicamente.

<ui:repeat value="#{bean.array}" varStatus="i">
  <h:inputText value="#{bean.array[i]}" />
</ui:repeat>

Ou ainda:

<ui:repeat value="#{bean.array}" var="i">
  <ui:inputText value=#{i}" />
</ui:repeat>

Mas uma vez eu quero dizer que não testei esse código e acho bem provavel que não funcione, embora ele pareça possível.
A solução mais garantida é a de criar um componente custom. Mas ainda vale tentar esse código uma vez que criar um componente vai muito mais trabalho.

D

dev.rafael

Testei essa solução e não funcionou!
Alguém testou isso? Estou tentando criar um banner com um link dinâmico e não estou conseguindo através do atributo varStatus!!!

Por favor se alguém conseguiu posta ai a solução!!!

Abraços

T

Eu quero a mesma coisa…(quase a mesma coisa)
ja descobriu como?

W

Cara,

Você conseguiu resolver este problema…

Estou precisando fazer isto mas com Dashboards e ainda não encontrei um exemplo.

Vlw

Criado 17 de dezembro de 2010
Ultima resposta 27 de abr. de 2012
Respostas 7
Participantes 5