framework etiquetas ejemplo componentes jsf jsf-2 dynamic-forms

etiquetas - Cómo agregar dinámicamente componentes JSF



jsf framework (3)

Debería ser así

Enlaza una etiqueta de formulario a la propiedad de frijol

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

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

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

HtmlInputText input=new HtmlInputText();

y adjuntar a su formulario

myform.getChildren().add(input);

¿Puedo agregar componentes JSF dinámicamente? Necesito tener un formulario con un botón que debería agregar un <h:inputText> al formulario. es posible?

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


Use h:dataTable para agregar elementos dinámicamente ... Tenga una lista de cualquier tipo que quiera proporcionar valores para dataTable ...

En h:dataTable ... puede incluir la etiqueta del elemento para crear dentro de <h:column>

Se usará para generar elementos que desee crear dinámicamente.


Utilice un componente de iteración como <h:dataTable> o <ui:repeat> para visualizar una List de entidades de tamaño dinámico. Haga que Bean @ViewScoped asegure de que la lista se recuerde en las devoluciones en la misma vista en lugar de volver a crearla una y otra vez.

Ejemplo de inicio 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: