Primefaces DataTable: selection not preserved after undo filtering -


im using:

  • primefaces v. 5.0
  • jsf v. 2.1.3-fcs

i have noticed strange behavior in datatable when filtering table selected row.

first, fulfil filter field 2 characters result rows not contain selected row. when delete 1 character filter field result rows contain selected row, selection no enabled. when delete second character, selection enabled again:

selected row before filtering:
selected row before filtering

filtering 2 characters, result rows not contain selected row: filtering 2 characters

deleting 1 character filter result rows contain selected row: deleting 1 character

deleting character- selected row has selection enabled again: deleting character

my xhtml:

<h:form>             <p:datatable value="#{testtablebean.list}"                  filteredvalue="#{testtablebean.filteredlist}"                  selectionmode="single"                 selection="#{testtablebean.currentitem}" var="item"                 rowkey="#{item.id}">                  <p:column headertext="id">                     <h:outputtext value="#{item.id}" />                 </p:column>                 <p:column headertext="name" filterby="#{item.name}"                     sortby="#{item.name}">                     <h:outputtext value="#{item.name}" />                 </p:column>                 <p:column headertext="value">                     <h:outputtext value="#{item.value}" />                 </p:column>             </p:datatable> </h:form> 

and bean:

@managedbean @viewscoped public class testtablebean {    private list<testtableitem> list;   private list<testtableitem> filteredlist;   private testtableitem currentitem;    {     list = new arraylist<testtableitem>();     (int = 0; < 5; ++i) {       list.add(new testtableitem(i, "hello" + i, 10 + i));     }   }    public list<testtableitem> getfilteredlist() {     return filteredlist;   }    public void setfilteredlist(list<testtableitem> filteredlist) {     this.filteredlist = filteredlist;   }     public list<testtableitem> getlist() {     return list;   }    public void setlist(list<testtableitem> list) {     this.list = list;   }    public testtableitem getcurrentitem() {     return currentitem;   }    public void setcurrentitem(testtableitem currentitem) {     this.currentitem = currentitem;   } } 

what have found out, in datatable selection attribute set based on list value attribute , value attribute set based on filteredvalue attribute- if not null. object selection attribute set before list filteredvalue attribute set, cause situation in selection set based on previous filter action, im not sure.

the question is, behavior normal or bug? , if bug, there workarounds?


Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -