保存后,dataTable不显示新添加的项目

时间:2015-09-17 07:30:44

标签: jsf jsf-2 datatable

我有一个使用primefaces和JSF的简单表单。单击保存时,它会显示另一个jsf页面,其中我有一个primefaces数据表。它应该在数据表中显示新创建的记录,而不是这种情况。为了查看新记录,我必须返回另一个页面,然后重新打开我拥有数据表的页面。我可以看到新的记录。如何解决这个问题,点击保存我可以看到新记录?

    <p:dataTable id="dta" value="#{CarComponent.listCars}"  var="current" rows="15" paginator="true" paginatorPosition="bottom">
    </dataTable>


     //method where listCars is populated
     public String carLists(){
        listCars = new arrayList(carDao.findAll());
        return "/jsf/listOfcars.xhtml";
     }

     //save method - on clicking save it should display the datatable

      public String save(Cars car){
        carService.save(car);
       return  "/jsf/listOfcars.xhtml";
       }


      public String getlistCars() {
          return listCars;
       }

      public void setlistCars(String listCars) {
          this.listCars = listCars;
      }

1 个答案:

答案 0 :(得分:1)

我只能猜测,但我认为CarService类至少是ViewScoped甚至是SessionScoped?无论哪种方式,正如弗里茨在评论中所说,汽车清单显然没有更新,因为视图没有重新渲染。

如果bean为return "/jsf/listOfCars.xhtml?faces-redirect=true",您可以使用@ViewScoped进行重定向,或者您必须将新生成的汽车添加到汽车列表中

public String saveCar(Car car) {
    carService.save(car);
    listCars.add(car);
    return "/jsf/listOfCars.xhtml";
}