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