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>
>>>
>>>
>>
>>
>


Reply via email to