2013-11-14 51 views
0

我创建了一个简单的primefaces 4.0表格,支持行编辑和列排序。我创建了两个条目并将其降序排序。现在,当我使用行编辑器更改一行的值时,在保存行被其他行的数据覆盖之后!当我重新加载表格时,一切都恢复正常。Primefaces:表格排序和行编辑不能一起工作

这是所有步骤:

  1. 与Spring ROO(有三串场只有一个实体)在pom.xml中创建一个简单的项目
  2. 设置primefaces到4.0版本,并改变了源代码到primefaces 4.0。
  3. 增加了对表格的行编辑和列排序。
  4. 启动服务器并输入所有值为“1”的第一个条目和所有值为“2”的第二个条目。
  5. 对任何列进行降序排序(结果:“2”在最上面,“1”在最下面)
  6. 使用RowEditor编辑任何值并保存。
  7. 现在编辑行的值会被视图中其他行的值覆盖。

这是我的JSF代码:

<p:dataTable editable="true" id="list" value="#{customerBean.allCustomers}" var="customer" rendered="#{customerBean.dataVisible}" resizableColumns="false" paginator="true" paginatorTemplate=" {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,25,50" rows="10"> 
     <p:ajax event="rowEdit" listener="#{customerBean.onRowEdit}" update=":growlForm:growl" /> 
     <p:columns value="#{customerBean.columns}" var="column" columnIndexVar="colIndex" 
       sortBy="#{customer[column]}"> 
     <f:facet name="header"> 
      <h:outputText value="#{applicationBean.getColumnName(column)}" /> 
     </f:facet> 
      <p:cellEditor> 
       <f:facet name="output"><h:outputText value="#{customer[column]}" /></f:facet> 
       <f:facet name="input"><p:inputText id="#{customer[column]}Input" value="#{customer[column]}" style="width:96%"/></f:facet> 
      </p:cellEditor> 
     </p:columns> 
     <p:column style="width:6%"> 
     <p:rowEditor /> 
     </p:column> 

而这个服务器代码:

public void onRowEdit(RowEditEvent event) { 
    this.setCustomer((Customer) event.getObject()); 
    this.persist(); 
} 

它是袋鼠的一个bug,Primefaces的,JSF的或JQuery的的??? 任何提示或解决方法?行编辑后刷新表格最简单的方法是什么,而不会丢失当前的排序和分页?

谢谢! 亚历

回答

0

在primefaces 4.0的sortBy应该是这样,而不是这个sortBy="#{column}"

`#{customer[column]}` 
0

你customerBean必须ViewScoped或者如果你有sessionScoped比你需要做的像我的例子:

<p:dataTable id="settingsTbl" value="#{settingsBean.settingsList}" var="item" editable="true"> 

.....

public List<Settings> getSettingsList() { 
    if(settingsList==null){ 
     settingsList = settingsFacade.findAll(); 
    } 
    return settingsList; 
} 
相关问题