删除行后刷新数据表

时间:2011-12-19 14:40:56

标签: java jsf primefaces

我正在使用PF 3.0RC1和JSF 2.0。

我有一个数据表,每行都有一个删除按钮。只要我按下删除,相应的行就会从db中删除,但数据表不会刷新。它仍然显示旧的行集。如何刷新数据表?

这是代码

   <h:form id="form">
     <p:dataTable  value="#{myController.displayList}" var="item" id="tbl">
       <p:column>
         <p:commandButton image="icon icon-delete"
                          id="del" action="#{myController.del}"
                          update="@form">    
           <f:setPropertyActionListener value="#{item}" 
              target="#{myController.selected}" for="del"/>
         </p:commandButton>
       </p:column>
     </p:dataTable>
   </h:form>

displayList是

private List<Image> displayList = new ArrayList<Image>();

public List<Image> getDisplayList() {
        Student std = (Student) getSelected;
        displayList = this.ejbFacade.getImages(std.getId()); // this method gets the list of images which has status = 1
        return displayList;
}

public void setDisplayList(List<Image> displayList) {
    this.displayList = displayList;
}

//这是del方法,它将图像的标志设置为0(从视图中按下del图标时)  public void del(){         selected.setActiveStatus(0);         MyController myController =(MyController)facesContext.getApplication()。getELResolver()。                 getValue(facesContext.getELContext(),null,“myController”);
        displayList.clear();         。myController.getFacade()编辑(所选择的);     }

2 个答案:

答案 0 :(得分:2)

我很确定您要从数据库中删除该行,但dataTable records list未更新/刷新。 通过从列表中删除已删除的记录或通过使用来自数据库的数据重新填充列表来更新您的记录列表(尽管这会消耗一些资源)。 给我看java代码!

PS:还祝贺你问了千分之的问题! :)所以我随时为你服务......

答案 1 :(得分:0)

如果displayList是保存表

中值的列表

然后

在你需要的删除方法中

“将已删除行的ID设置为索引变量”

然后执行:

displayList.remove(index);

然后从db

中删除该行

还尝试将process="@this"添加到commandButton