Hi,

I'm trying to create a (trinidad) table in which it is possible to remove a row. Next to each row, a "delete"-button is displayed. However, each time I push the delete button, a wrong row is deleted (for instance, when I push the delete button next to the first row, the third row is removed)! Does anyone have an idea why this may be happening???

Regards,
Henk

JSF-code:

<tr:table var="row" value="#{tableBean.smallTable}" rowBandingInterval="1"
                   binding="#{tableBean.smallTableBinding}">
                   <tr:column sortProperty="naam" sortable="true">
                       <f:facet name="header">
                           <tr:outputText value="Naam" />
                       </f:facet>
                       <tr:inputText id="voornaam"    value="#{row.naam}"/>
                   </tr:column>
                   <tr:column sortProperty="voornaam" sortable="true">
                       <f:facet name="header">
                           <tr:outputText value="Voornaam" />
                       </f:facet>
                       <tr:inputText value="#{row.voornaam}" />
                   </tr:column>
                   <tr:column sortProperty="leeftijd" sortable="true">
                       <f:facet name="header">
                           <tr:outputText value="Leeftijd" />
                       </f:facet>
                       <tr:inputText value="#{row.leeftijd}" />
                   </tr:column>
                   <tr:column>
                     <tr:commandLink id="removeContact"
                       text="Remove"
                       actionListener="#{tableBean.removeContact}"
                       immediate="true" />
                   </tr:column>
               </tr:table>

Managed bean:

public class TableBean {
   private List<Contact> smallTable;
   private UIXTable smallTableBinding;
public TableBean() {
       this.smallTable =  new ArrayList<Contact>();

       Contact c1 = new Contact();
       c1.setNaam("Vandam");
       c1.setVoornaam("Alain");
       c1.setLeeftijd("33");
       smallTable.add(c1);
Contact c2 = new Contact();
       c2.setNaam("Tanghe");
       c2.setVoornaam("Sammy");
       c2.setLeeftijd("36");
       smallTable.add(c2);
Contact c3 = new Contact();
       c3.setNaam("Laplasse");
       c3.setVoornaam("Bucky");
       c3.setLeeftijd("42");
       smallTable.add(c3);
   }
public void removeContact(ActionEvent event) throws Exception {
       logger.info("Inside TableBean.removeContact()");

       Contact contact = (Contact) smallTableBinding.getRowData();
       Collection contacten = (Collection) smallTableBinding.getValue();
       contacten.remove(contact);
   }

   //Getters, setters and other methods...
}

faces-config:

 <managed-bean>
   <managed-bean-name>tableBean</managed-bean-name>
   <managed-bean-class>be.kava.jsfdemo.table.TableBean</managed-bean-class>
   <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

Reply via email to