2016-07-04 7 views
0

das Datatable zeigt nur das zuletzt hinzugefügte Element an, es scheint, dass jedes Mal, wenn ich das commandButton drücke, die Methode die Liste neu schreibt, was kann ich tun, um das zu vermeiden?Primefaces DataTable zeigt nur das letzte Element an

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> 

Bean

public void setPedidoActual() { 

    Producto pro = productoFacade.find(idProducto); 

     listPedidoActual.add(pro); 

} 

public List<Producto> getPedidoActual() { 

    return listPedidoActual; 
} 
+0

Was ist der Umfang Ihrer Bean? Wenn es RequestScoped ist, wird die Bean bei jedem Klick rekonstruiert. Wenn es Session- oder View Scoped ist, sollte der Listeninhalt beibehalten werden. – Abaddon666

Antwort

0

Ihre setPedidoActual() Methode scheint nur ein Element an der Fassade Service find(idProducto) Basis zu erhalten, ist das richtig? Haben Sie überprüft, was der Remote-Dienst zurückgibt? Wahrscheinlich gibt es tatsächlich nur einen Rekord.

Daneben, versuchen Sie Ihr Setter/Getter aus

getPedidoActual()/setPedidoActual()

in

getListPedidoActual()setListPedidoActual()

nun Ihre Methodennamen mit Ihrem Attribut konsistent sind zu benennen.

EDIT: Was ist mit dem PanelGrid-Tag passiert? Haben Sie absichtlich weggelassen oder wo fängt es an?

Verwandte Themen