初学者在这里。我有一个简单的pojo(Pedido
),除了id之外还带有一个属性(referencia
)。
使用下面的表格,我可以通过输入文本更改pedido.referencia
。
editListPedidoBean.salvar
仅打印我的List<Pedido>
,我可以看到我在InputText中键入的值在那里。
<h:form>
<ui:repeat value="#{editListPedidoBean.listaPedidos}" var="pedido">
<h:outputLabel value="#{pedido.id}" />
<h:inputText value="#{pedido.referencia}" />
<h:commandButton value="salvar" action="#{editListPedidoBean.salvar}" />
<br />
</ui:repeat>
</h:form>
但是,使用dataTable
,我在输入文本中键入的值不会传递到我的后备bean。 editListPedidoBean.salvar
打印带有referencia
的旧值的列表。
<h:form>
<h:dataTable value="#{editListPedidoBean.listaPedidos}" var="pedido">
<h:column>
<h:outputLabel value="#{pedido.id}" />
</h:column>
<h:column>
<h:inputText value="#{pedido.referencia}" />
</h:column>
<h:column>
<h:commandButton value="salvar"
action="#{editListPedidoBean.salvar}" />
</h:column>
</h:dataTable>
</h:form>
如何有效地将bean中的属性绑定到dataTable中的字段?
编辑: 这是我的豆子:
package pedido;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
@Model
public class EditListPedidoBean implements Serializable {
private List<Pedido> listaPedidos = new ArrayList<>();
@Inject
EditListPedidoDao dao;
public List<Pedido> getListaPedidos() {
listaPedidos = dao.getListaPedidos();
return listaPedidos;
}
public void setListaPedidos(List<Pedido> listaPedidos) {
this.listaPedidos = listaPedidos;
}
public String salvar() {
System.out.println(listaPedidos);//I'm just printing out the list to see if my bean can 'see' the changes made in the InputText before I try to persist it.
return null;
}
}