如何通过h:dataTable中的InputText更改bean的成员属性

时间:2018-09-12 19:59:18

标签: jsf

初学者在这里。我有一个简单的pojo(Pedido),除了id之外还带有一个属性(referencia)。

使用下面的表格,我可以通过输入文本更改pedido.referenciaeditListPedidoBean.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;
}

}

0 个答案:

没有答案