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);
}
}