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

dataTable does not show newly added item after save

我有一个使用 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;
      }

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

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

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