Datatable selection(s) lost afte rpage refresh/sort/filter/p

UI Components for JSF
Post Reply
sammy
Posts: 2
Joined: 19 Jan 2011, 16:40

01 Mar 2011, 17:16

xhtml

<p:dataTable id="ptable"
var="var" value="#{RobsBean.carList}"
selection="#{RobsBean.cars}"
selectionMode="multi"
rowUnselectListener="#{RobsBean.onRowUnselect}"
rows="9" paginator="true"
paginatorTemplate="{CurrentPageReport} {PreviousPageLink} {PageLinks} {NextPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="3,6,9" >

<p:column style="width:20px" sortBy="#{var.id}" filterBy="#{var.id}" >
<f:facet name="header" >
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{var.id}" />
</p:column>

<p:column style="width:60px" sortBy="#{var.make}" filterBy="#{var.make}" >
<f:facet name="header" >
<h:outputText value="Make" />
</f:facet>
<h:outputText value="#{var.make}" />
</p:column>

<p:column style="width:60px">
<f:facet name="header" >
<h:outputText value="Available" />
</f:facet>
<h:selectBooleanCheckbox value="#{var.available}" >
<f:converter converterId="checkboxConverter" />
</h:selectBooleanCheckbox>
</p:column>
</p:dataTable>

bean

private Car [] cars = null;

public Car[] getCars()
{
System.out.println(">> getCars");
if (this.cars != null)
for (int i = 0; i < cars.length; i++)
System.out.println(" car " + i + ",id=" + this.cars.getId() + " " + this.cars.getMake() + "/" + this.cars.getModel());
return this.cars;
}

public void setCars(Car[] e)
{
// Always passed a non null value (empty list)
// Its possible for the same object to be in list > once because of a bug in primefaces on refresh, page forward/back
this.cars = e;
System.out.println(">> setCars");
for (int i = 0; i < cars.length; i++)
System.out.println(" car " + i + ",id=" + this.cars.getId() + " " + this.cars.getMake() + "/" + this.cars.getModel());
}

public void onRowUnselect(UnselectEvent event)
{
Car c =(Car) event.getObject();
System.err.println("onRowUnselect car " + c.getId() + " " + c.getMake() + "/" + c.getModel());
}


What is the PrimeFaces version?
2.2.1

What is the expected output? What do you see instead?
15:51:35,817 INFO [STDOUT] >> getCars (on page select)
15:51:59,489 INFO [STDOUT] >> setCars (on select first row)
15:51:59,489 INFO [STDOUT] car 0,id=1 Peugeot/206


15:52:00,473 INFO [STDOUT] >> setCars (on select second row)
15:52:00,473 INFO [STDOUT] car 0,id=1 Peugeot/206
15:52:00,473 INFO [STDOUT] car 1,id=2 Ford/Transit

15:52:02,442 INFO [STDOUT] >> setCars (on select third row)
15:52:02,442 INFO [STDOUT] car 0,id=1 Peugeot/206
15:52:02,442 INFO [STDOUT] car 1,id=2 Ford/Transit
15:52:02,442 INFO [STDOUT] car 2,id=3 Aston Martin/206

15:52:10,708 INFO [STDOUT] >> setCars (on deselect a row)
15:52:10,708 INFO [STDOUT] car 0,id=1 Peugeot/206
15:52:10,708 INFO [STDOUT] car 1,id=3 Aston Martin/206
15:52:10,708 ERROR [STDERR] onRowUnselect car 2 Ford/Transit

15:53:49,835 INFO [STDOUT] >> getCars (on refresh BUT ROWS NOT HIGHLIGHTED AND SHOULD HAVE BEEN)
15:53:49,835 INFO [STDOUT] car 0,id=1 Peugeot/206
15:53:49,835 INFO [STDOUT] car 1,id=3 Aston Martin/206

15:54:06,476 INFO [STDOUT] >> setCars (on select id1 AGAIN when you should not have been able to because it was already selected. Note the id=3 selected object has been lost)
15:54:06,492 INFO [STDOUT] car 0,id=1 Peugeot/206

Which JSF implementation with version are you using?(Mojarra or MyFaces)
Mojarra 2.0.2

Which component libraries are you using in addition to PrimeFaces?
None

Which application server or servlet container are you using?
JBoss 5.1.0.GA

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 29 guests