更改微调器值时更新购物车

时间:2013-07-02 19:46:33

标签: ajax jsf-2 primefaces datatable spinner

我有一个购物车,在我的应用程序中是一个数据表。我有一个微调器来显示该产品的数量,我希望当微调器值改变时,刷新我的购物车,这是我的代码:

<p:dataTable var="carro" value="#{productoBean.productos}">
  <f:facet name="header">
    <h:outputText value="Carrito de la Compra" />
  </f:facet>
  <p:column headerText="Producto">
    <h:outputText value="#{carro.producto.nombre}" />
  </p:column>
  <p:column headerText="Cantidad">
    <p:spinner value="#{carro.cantidad}">
      <p:ajax listener="#{productoBean.refreshCantidad}" update="@this" />
    </p:spinner>
  </p:column>
  <p:column headerText="Precio/Unidad">
    <h:outputText value="#{carro.producto.precioUnidad} €" />
  </p:column>
  <p:column headerText="Valor">
    <h:outputText value="#{carro.valor} €" />
  </p:column>
</p:dataTable>

我不知道如何获取微调器的项目更改并更新其值。

我需要帮助,提前致谢。

问候。

1 个答案:

答案 0 :(得分:0)

最后我做了:

<p:column headerText="Cantidad">
  <p:spinner value="#{carro.cantidad}" valueChangeListener="#{productoBean.updateCantidad}">
    <p:ajax event="change" listener="#{productoBean.refreshCantidad(carro)}" update=":formCarrito" />
  </p:spinner>
</p:column>

productoBean.updateCantidad我有:

public void updateCantidad(ValueChangeEvent event) {
  cantidad = (Integer) event.getNewValue();
}

productoBean.refreshCantidad(carro)可以看出,carro是该方法的主题:

public void refreshCantidad(Compra compra) {
  carritoBean.addProduct(compra.getProducto(), cantidad);
}

这样我知道微调器的最后一个值是什么,我可以更新我的购物车。

问候。