jsf 2 - plantillas - Campos de texto agregados dinámicos en JSF
ui:composition primefaces (1)
Esta pregunta fue respondida más de una vez, básicamente necesita mantener una List
para todos los campos en el bean, y la elimina o agrega a esta List
con sus botones. Tenga en cuenta que esto es importante para estar en ViewScoped
o ViewScoped
o su List
se reiniciará en cada acción.
Vista:
<h:form>
<h:dataTable id="tblFields" value="#{bean.fields}" var="field">
<h:column>
<h:inputText value="#{field.value}" />
</h:column>
<h:column>
<h:commandButton value="Remove">
<f:ajax listener="#{bean.onButtonRemoveFieldClick(field)}" immediate="true" render="@form" />
</h:commandButton>
</h:column>
</h:dataTable>
<h:commandButton value="Add">
<f:ajax listener="#{bean.onButtonAddFieldClick}" execute="@form" render="tblFields" />
</h:commandButton>
</h:form>
Clase de ayuda:
public class Field implements Serializable
{
private String m_sName;
public void setName(String p_sName)
{
m_sName = p_sName;
}
public String getName()
{
return m_sName;
}
}
Frijol :
@ManagedBean
@ViewScoped
public class Bean implements Serializable
{
private List<Field> m_lFields;
public Bean()
{
m_lFields = new ArrayList();
m_lFields.add(new Field());
}
public void setFields(List<Field> p_lFields)
{
m_lFields = p_lFields;
}
public List<Field> getFields()
{
return m_lFields;
}
public void onButtonRemoveFieldClick(final Field p_oField)
{
m_lFields.remove(p_oField);
}
public void onButtonAddFieldClick(AjaxBehaviorEvent p_oEvent)
{
m_lFields.add(new Field());
}
}
Esta pregunta ya tiene una respuesta aquí:
- Cómo agregar dinámicamente componentes JSF 3 respuestas
Tengo una pantalla con inputText, junto a ella hay un botón (+), cuando el usuario debe presionar ese botón, el formulario debe agregar otra entrada de texto adicional a su lado (o debajo, lo que sea)
Aquí está el código:
<table>
<tr>
<td>
<p:inputText value="#{controller.x}" />
<img src="../images/ico_plus.png" />
</td>
</tr>
</table>
en Controller.java:
private String x;
public String getX(){return x}
public void setX(String val){x = val}
Necesito que la página se rellene con varios campos y que el controlador tenga todos los valores de los campos ''captados