2016-07-04 58 views
0

Datatable只顯示最後添加的項目,似乎每次按下commandButton時該方法都會重寫列表,我該怎麼做才能避免這種情況?Primefaces DataTable僅顯示最後一項

JSF

<p:commandButton action="#{productoBean.setPedidoActual()}" value="Agregar" update="dt"/> 

     </p:panelGrid> 
     <p:dataTable value="#{productoBean.pedidoActual}" var="pedi"> 
      <p:column headerText="Nombre">     
       <h:outputText value="#{pedi.descripcion}"/> 
      </p:column> 
     </p:dataTable> 

public void setPedidoActual() { 

    Producto pro = productoFacade.find(idProducto); 

     listPedidoActual.add(pro); 

} 

public List<Producto> getPedidoActual() { 

    return listPedidoActual; 
} 
+0

你的豆的範圍是什麼?如果是RequestScoped,Bean將在每次點擊時重建。如果是會話或查看範圍,它應該保留列表內容。 – Abaddon666

回答

0

setPedidoActual()方法似乎只接收一個基於門面服務find(idProducto)項目,是正確的?你檢查過遠程服務返回的內容嗎?實際上可能只有一條記錄。

在那旁邊,試圖從

getPedidoActual()/setPedidoActual()

重命名的setter /吸氣到

getListPedidoActual()setListPedidoActual()

現在你的方法名是與你的屬性是一致的。

編輯:發生了什麼panelGrid標記?你是故意省略還是從哪裏開始?