What I do is:

<tr:column>
 <f:facet name="header">
   <tr:outputText value="-Delete-"/>
 </f:facet>
 <tr:commandLink id="delete" text="Delete" action="#{all.deleteUser}">
   <tr:setActionListener from="#{user}" to="#{all.toDelete}"/>
 </tr:commandLink>
</tr:column>


in the #{all} bean:
private User toDelete = null; (+set/get)

and
public String deleteUser()
{
 this.getUserService().removeUser(toDelete);
 return ("all");
}

the user service here is injected w/ spring.

The demo is available here:

http://code.google.com/p/facesgoodies/




On 2/13/07, Henk Vanhoe <[EMAIL PROTECTED]> wrote:
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>




--
Matthias Wessendorf
http://tinyurl.com/fmywh

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

Reply via email to