2015-09-17 25 views
0

我有一個使用primefaces和JSF的簡單表單。點擊保存後,它會顯示另一個jsf頁面,我有一個primefaces數據表。它應該在數據表中顯示新創建的記錄,而不是這種情況。爲了查看新記錄,我必須返回到另一個頁面,然後重新打開具有數據表的頁面。我可以看到新的紀錄。如何解決這個問題,使點擊保存我可以看到新的記錄?dataTable在保存後不顯示新添加的項目

<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

你確定你有車加入carList之前/之後保存? – Fritz

+0

請按照最佳實踐 - 提供相關庫的版本,在這種情況下例如JSF和PrimeFaces。 –

+0

primefaces 5.0和jsf 2.0 – asma

回答

1

我只能猜測,但我假設CarService類是至少ViewScoped甚至SessionScoped?無論如何,正如Fritz在評論中所說的那樣,汽車清單顯然沒有更新,因爲視圖沒有被重新渲染。

您可以做一個重定向與return "/jsf/listOfCars.xhtml?faces-redirect=true"如果bean是@ViewScoped,或者你有新生成的車添加到汽車的名單像

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

這個bean是:@Scope(「session」) @Component(「CarComponent」) – asma

+0

那麼,你試過把新的/保存的汽車添加到bean的支持列表中嗎? –

+0

我嘗試它,它的工作原理。但這是一個很好的解決方案還是簡單的解決方法?性能如何?我找到了另一個解決方法:在listCars的getter方法中,我添加了這一行:listCars = new arrayList(carDao.findAll());並完成這項工作。但是我意識到每次數據表都需要在DB中進行一次不好的性能調用。我對嗎? – asma

相關問題