2011-03-05 88 views
0

我有一個頁面,當用戶登錄時,他將顯示他創建的15個最近記錄的列表.jsf頁面有兩種形式,一種形式是有幾個字段用於搜索條件和命令按鈕。另一種形式是有一個數據表,它將獲取記錄並顯示它。在數據表的最後一列中,根據狀態顯示一些鏈接。JSF命令按鈕

要顯示h:datatable標記中的記錄,我正在使用支持bean RecordSearchBean屬性記錄,如果該bean的搜索條件爲空,它將獲取記錄。 RecordSearchBean由具有proerties:

FROM日期(用於搜索criertia) TODATE(用於搜索criertia) 記錄(用於顯示記錄) fetchRecords()(方法來獲得最近15個記錄用戶) searchRecords(動作事件E))

公示名單getRecentRecord({

如果(沒有fromdate == NULL & & TODATE == NULL)(由JSF頁面上的搜索按鈕調用){ this.records = fetchRecords() ; } return this.records; }

公開名單fetchRecords(){// 代碼來獲取的記錄 }

公共無效searchRecords(ActionEvent的五){ 列表//代碼來獲得基於搜索條件的記錄 列表searchedRecords = getREcords(本); this.records = searchingRecords; }

此RecordSearchBean在請求範圍內。

我在jsf中做的是當用戶登錄時,他將得到由記錄屬性填充的記錄並顯示在數據表中。

當用戶點擊jsf頁面上的搜索按鈕時,記錄屬性將由searchRecords actionlistener填充。 直到一切正常工作,但是當我點擊記錄最後一列中的數據表提供的任何鏈接時,我再次獲得當用戶登錄時顯示的記錄列表。

有一個主頁當用戶點擊這個標籤時,他將得到15條記錄的清單,這些記錄在他登錄時顯示給用戶。

我認爲這個propeblem是與jsf託管bean範圍相關的。如果我將更改bean的範圍,然後數據庫的最後一列中的每個鏈接都正常工作。

如用戶會點擊主頁上那麼他將無法獲得的,當他在。

登錄請幫我,他已經得到了記錄列表的話。

回答

0

我認爲問題可能(如您已經陳述)與RequestScoped有關。如果你點擊一個鏈接,Bean將被新實例化,所有的屬性將被重置。

嘗試使用ViewScoped代替,並且如果單擊HomePage選項卡,則將fromDatetoDate重置爲null。在ViewScope中,如果通過從方法返回null來重新加載同一頁面,Bean將不會被重新實例化。