2010-02-16 60 views
2

我有一個JSF中的數據表,當用戶選擇一個下拉菜單時,這個數據表會被填充。該表顯示的列表來自輔助bean。這個支持bean在會話範圍內。因此,當用戶點擊網頁的其他鏈接並返回到此頁面時,它仍然會顯示來自數據列表的數據以及之前的選擇。頁面加載時的JSF數據表刷新

問題是 - 如何確保數據在用戶離開頁面時被重置,以便當用戶返回時,他們可以看到一個沒有數據的新頁面。

我不能將支持bean放在請求範圍內,因爲這將導致無法使用購物車類型的應用程序。

回答

4

將數據模型保留在會話作用域bean中,添加一個請求作用域bean,它從會話作用域bean複製引用,並讓表單提交給該請求作用域bean,並讓該視圖使用請求作用域bean。您可以在每個託管屬性注入下從請求作用域bean內部訪問會話作用域bean。例如。

<managed-bean> 
    <managed-bean-name>cart</managed-bean-name> 
    <managed-bean-class>com.example.Cart</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

<managed-bean> 
    <managed-bean-name>showCart</managed-bean-name> 
    <managed-bean-class>com.example.ShowCart</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>cart</property-name> 
     <value>#{cart}</value> 
    </managed-property> 
</managed-bean> 

其中ShowCart可以看起來像:

public class ShowCart { 
    private Cart cart; 
    private Cart show; 
    // +getters+setters 

    public String submit() { 
     show = cart; 
     // ... 
    } 
} 

和視圖使用#{showCart.show}代替。

+0

感謝BalusC的解決方案。我將使用它,我希望這也可以在JSF 1.1中使用。 – Shamik 2010-02-17 03:05:58

+0

真的,這是:) – BalusC 2010-02-17 03:13:42