2013-07-05 15 views
5

Birkaç satır içeren bir veri tablom var ve o satırdaki nesneyi silen basit bir düğme içeren bir formum var.Primefaces veri tablosundaki bir nesne için silme düğmesi nasıl yerleştirilir?

Yani ilk çalışma versiyonu:

<h:dataTable value="#{actorTableBackingBean.allActors}" 
    var="actor" styleClass="table table-bordered"> 

    <h:column headerText="Actor Name" sortBy="#{actor.firstName}"> 
     <h:outputText value="#{actor.firstName}"/> 
    </h:column> 

    <h:column headerText="Actor Detail"> 
     <h:form> 
      <h:commandButton value="Delete Actor" 
       styleClass="btn btn-primary" 
       action="#{actorTableBackingBean.deleteActor(actor.actorId)}"/> 
     </h:form> 
    </h:column> 
</h:dataTable> 

Ve böyle yöntem benzediğini deleteActor geçerli:

public String deleteActor(String id){ 
    removeActorWithId(id); 
    return "/allActors.xhtml"; 
} 

private void removeActorWithId(String id){ 
    int idk = Integer.parseInt(id); 
    for(Actor a:allActors){ 
     if(a.getActorId() == idk){ 
      allActors.remove(a); 
      return; 
     } 
    } 
} 

Yani bu tam olarak olduğu gibi beklendiği gibi çalışır. Ancak, here numaralı belgede gösterildiği gibi, bir Hazırlık Verileri Tablosu tablosunu kullandığımda, sil düğmesi yalnızca ikinci durumda ve sadece ilk kez İLK ROW için çalışır. Diğer satırlar için "Sil" butonuna tıkladığımda hiçbir şey olmuyor. Sebep ne olabilir? Ben öneririm vb sütun ...

+0

Backing Bean'inizin kapsamı nedir? – Sonic

+0

@Sonic Merhaba, RequestScoped var. –

+0

Formunuzu dataTable'ın dışına taşıyın. – 8bitjunkie

cevap