【问题标题】:dataTable show copy of recordsdataTable 显示记录的副本
【发布时间】:2013-12-07 12:21:51
【问题描述】:

我正在使用 primefaces 开发 JSF,我使用的是 dataTable row Editing,其中包含来自数据库的数据,

问题

  • 编辑行后,我曾经从表中删除行,但 dataTable 显示的是剩余记录的副本,

例如:

JSF 页面:

<p:dataTable var="perreq" value="#{leaverequest.perRequestList}" id="perrequestlist" editable="true"  >
        <p:ajax event="rowEdit" update=":form0:form2:acivitydatatable,perrequestlist,:form0:form:growl" listener="#{leaverequest.onEdit}" />  
        <p:ajax event="rowEditCancel"  listener="#{leaverequest.onCancel}" />  

            <p:column headerText="Name" style="width:100px;"><h:outputText value="#{perreq.ename}" /></p:column>  
            <p:column headerText="From" style="width:60px;"><h:outputText value="#{perreq.perFrom}" /></p:column>  
            <p:column headerText="To" style="width:60px;"><h:outputText value="#{perreq.perTo}"/></p:column>  
            <p:column headerText="Date" style="width:80px;">  
            <h:outputText  value="#{perreq.dateOfPermission}" >
                <f:convertDateTime pattern="dd-MM-yyyy" />
            </h:outputText>
            </p:column>  
            <p:column headerText="Reason" style="width:200px;"><h:outputText value="#{perreq.reason}" /></p:column>  
            <p:column headerText="Tl Comments" style="width:200px;"><h:outputText value="#{perreq.tlComments}" /></p:column>  
            <p:column headerText="Comments" style="width:160px;">  
            <p:cellEditor>  
            <f:facet name="output">  
            <h:outputText value="" />  
            </f:facet>  
            <f:facet name="input">  
                <h:inputText value="#{leaverequest.perComments}"  style="width:150px;" label="Year" maxlength="100"/>  
            </f:facet>  
            </p:cellEditor>  
            </p:column>  
                <p:column headerText="Status" style="width:70px;">  
                <p:cellEditor>  
            <f:facet name="output">  
                <h:outputText value="#{perreq.status}" />  
            </f:facet>  
            <f:facet name="input">  
                 <h:selectOneMenu value="#{leaverequest.statusResult}" style="width:100px;" >  
                   <f:selectItem itemLabel="Accept" itemValue="Accepted"/>
                 <f:selectItem itemLabel="Reject" itemValue="Rejected"/>  
                 </h:selectOneMenu>  
            </f:facet>  
            </p:cellEditor>  
            </p:column >  
            <p:column width="80px;"><p:rowEditor/></p:column>  
 </p:dataTable>

带有 getter n setter 的 Bean:

 public void onEdit(RowEditEvent event)
 {  
    getPendingPermssionRequestDB();        
 } 
  public List<PendingRequestBean> getPerRequestList() 
  {
    return perRequestList;
  }
    public void setPerRequestList(List<PendingRequestBean> perRequestList) 
    {
        this.perRequestList = perRequestList;
    }

  public void getPendingPermssionRequestDB()
  {
        try
        {

   //Modify list and retrieve from DB
            Session hibernateSession=HibernateUtil.getSessionFactory().openSession();
            Query query=hibernateSession.createQuery("select a from Permissionrecord as a");
            List<PendingRequestBean> l=(List<PendingRequestBean>)query.list();
            this.perRequestList=l;
            hibernateSession.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
  }

任何建议...

【问题讨论】:

  • 实际上提供一些代码比显示正在发生的事情的图片更有帮助。
  • 我已经添加了相应的 bean 类的 JSF 代码,

标签: jsf-2 datatable


【解决方案1】:

当您在编辑后单击该行的复选标记时,会生成一个事件(我想您已经在使用它了)。只需在此处调用一个侦听器方法即可从表中删除当前行并更新整个表:

<p:ajax event="rowEdit" listener="#{tableBean.onEdit}" update="table" />

这就是你的托管 bean 的事件,假设 tableElements 是包含你的 dataTable 值的列表:

public void onEdit(RowEditEvent event) {  
    tableElements.remove((Element) event.getObject());
}  

另请参阅:

【讨论】:

  • 感谢您的建议,实际上它不起作用,编辑行后,列表包含正确的值,但在 JSF 页面中仅显示记录副本
  • a copy of records 是什么意思?您在getPendingPermssionRequestDB 的查询是否加载了正确的值?
  • 是的,记录的副本意味着它显示旧数据,请参阅我附加的图像中的第三张表
  • 您实际上只是在编辑行时执行list 操作。你如何假装你的结果改变了?您实际上并没有修改数据库(因此也没有修改perRequestList),因此表行将保持与开始时相同。
猜你喜欢
  • 2019-03-26
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多