Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 行删除后刷新数据表_Java_Jsf_Primefaces - Fatal编程技术网

Java 行删除后刷新数据表

Java 行删除后刷新数据表,java,jsf,primefaces,Java,Jsf,Primefaces,我将PF3.0RC1与JSF2.0一起使用 我有一个datatable,每行有一个delete按钮。我一按delete键,相应的行就会从db中删除,但datatable不会刷新。它仍然显示旧的行集。如何才能刷新数据表 这是密码 <h:form id="form"> <p:dataTable value="#{myController.displayList}" var="item" id="tbl"> <p:column>

我将PF3.0RC1与JSF2.0一起使用

我有一个datatable,每行有一个delete按钮。我一按delete键,相应的行就会从db中删除,但datatable不会刷新。它仍然显示旧的行集。如何才能刷新数据表

这是密码

   <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>

显示列表是

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;
}
private List displayList=new ArrayList();
公共列表getDisplayList(){
学生标准=(学生)已选择;
displayList=this.ejbFacade.getImages(std.getId());//此方法获取状态为1的图像列表
返回显示列表;
}
public void setDisplayList(列表显示列表){
this.displayList=displayList;
}
//这是del方法,它将图像的标志设置为0(当从视图中按下del图标时) 公屋{ 已选择。setActiveStatus(0); MyController MyController=(MyController)facesContext.getApplication().getELResolver()。 getValue(facesContext.getELContext(),null,“myController”);
displayList.clear(); myController.getFacade().edit(选中);
}

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


附言:祝贺你(你问了第一千个问题!)因此,如果displayList是保存表中的值的列表,那么我将由您处理…

然后

在delete方法中,您需要执行以下操作

“将已删除行的id设置到索引变量中”

然后做:

displayList.remove(index);
然后从数据库中删除该行


同时尝试将
process=“@this”
添加到commandButton

是否使用连接池上的缓存(如commons dbcp)?可能问题就在那里。我正在尝试将标志设置为0,以便图像不会显示在数据表中。在del方法中,我将标志设置为0,在datatable查询中,我将获得active=1的图像。下面是del方法“public void del(){selected.setActiveStatus(false);FacesContext FacesContext=FacesContext.getCurrentInstance();MyController MyController=(MyController)FacesContext.getApplication().getELResolver().getValue(FacesContext.getELContext(),null,“MyController”);myController.getFacade().edit(选中);}'@user1097366请通过编辑您的问题来发布代码,就像您将xhtml代码。。。我也不明白这个标志是什么,发布
displayList
方法