Oh, sorry, but it's still possible!!! With a bit more work though.
In the page:
<tr:table binding="#{myBean.table}" ...>
...
</tr:table>
In the bean:
private UIComponent table;
public UIComponent getTable()
{
return table;
}
public void setTable(UIComponent table)
{
this.table = table;
}
public String myAction()
{
RequestContext.getCurrentInstance().addPartialTarget(table);
// ...
}
On 2/13/07, Henk Vanhoe <[EMAIL PROTECTED]> wrote:
>
> Henk Vanhoe wrote:
>
> > Thank you for your answer!
> >
> > I have done some more tests and I noticed that when I push the
> > "delete"-button the correct "contact" is removed from the model (the
> > "smallTable"-list), but these changes are not correctly
translated in
> > the HTML-page... But when I replace my actionListener by an action
> > method (as you do in your code), the changes are correctly displayed
> > (as if with an actionlistener the view were not synchronized with
the
> > model??)
> > Unfortunately with an actionListener it is impossible to use partial
> > page rendering...
>
> I meant : Unfortunately with an *** action method *** it is impossible
> to use partial page rendering...
>
> >
> > Is there a way to force the view to be redisplayed with the correct
> > data without losing the possibility to use partial page rendering?
> >
> > Regards,
> > Henk
> >
> > Matthias Wessendorf wrote:
> >
> >> 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>
> >>>
> >>>
> >>
> >>
> >
>
>