Pregunta

componentes JSF ¿Puedo añadir de forma dinámica? Es necesario disponer de un formulario con un botón que debe añadir una <h:inputText> al formulario. ¿Es esto posible?

Sé que esto debería ser posible en JavaScript de alguna manera. No Alguien sabe cómo hacer esto en JSF? Creo que el principal problema es cómo consigo o valores establecidos de nuevas entradas a través de #{value}.

¿Fue útil?

Solución

Usar un componente iterando como <h:dataTable> o <ui:repeat> para mostrar una List dinámicamente tamaño de las entidades. Hacer que el @ViewScoped frijol para asegurar que la lista es recordado a través de las devoluciones de datos en el mismo punto de vista en lugar de volver a crear una y otra vez.

ejemplo Kickoff con <h:dataTable>:

<h:form>
    <h:dataTable value="#{bean.items}" var="item">
        <h:column><h:inputText value="#{item.value}" /></h:column>
        <h:column><h:commandButton value="remove" action="#{bean.remove(item)}" /></h:column>
    </h:dataTable>
    <h:commandButton value="add" action="#{bean.add}" />
    <h:commandButton value="save" action="#{bean.save}" />
</h:form>

bean administrado:

@ManagedBean
@ViewScoped
public class Bean {

    private List<Item> items;

    @PostConstruct
    public void init() {
        items = new ArrayList<Item>();
    }

    public void add() {
        items.add(new Item());
    }

    public void remove(Item item) {
        items.remove(item);
    }

    public void save() {
        System.out.println("items: " + items);
    }

    public List<Item> getItems() {
        return items;
    }

}

Modelo:

public class Item {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String toString() {
        return String.format("Item[value=%s]", value);
    }

}

Ver también:

Otros consejos

Es Así tiene que ser

Enlazar una etiqueta de formulario a la propiedad de bean


<form binding="#{myBean.myform}">...</form>

@ManagedBean("myBean")
public class Bean{
   property HtmlForm myform;
}

en el evento, crear una nueva instancia del componente de entrada

HtmlInputText input=new HtmlInputText();

y adjuntar a la que su forma

myform.getChildren().add(input);

Uso h:dataTable añadir elementos dinámicamente ... Tenga una lista de cualquier tipo que desea proporcionar valores para dataTable ...

En h:dataTable ... que puede incluir la etiqueta de elemento para crear el interior <h:column>

Se utiliza para generar los elementos que desea crear de forma dinámica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top