我想知道是否有以下方案的通用模式。@PostConstruct和commandButton/commandLink參數案例
比方說,我有一個JSF頁面支持一個請求範圍的bean。 我想在用戶進入此頁面時從數據庫表中提取所有數據行。 相同的JSF頁面包含提供查詢條件的表單。當用戶提供查詢條件並提交表單時,我想在同一頁面上顯示結果。
在頁面條目處獲取所有行的合適位置是@PostConstruct方法。這是一個不錯的地方,因爲額外的(注入的)請求參數在這裏已經可用並且可以在查詢中使用。但是,從表單中提取的參數尚不可用。他們可以在操作方法中訪問。
如果用戶使用表單標準查詢數據庫表,在這種情況下數據庫將被查詢兩次。請求作用域bean將被重新創建,並且在表單操作方法獲取用戶需要之前調用獲取所有行的@PostConstruct方法。
當然,我只能在action方法中將表單結果重定向到另一個由不同的bean支持的JSF頁面。但是,有沒有一種方法可以完成只抓取一個JSF頁面和一個託管bean所需的內容?
謝謝!這應該能夠完成這項工作。就我所知,ViewScoped bean唯一的問題是你不能使用GET請求參數。但可以使用commandLink/Button setPropertyActionListener傳遞所有附加參數。 – Dzik 2011-12-23 11:29:21
你可以肯定地使用GET參數'',這比'@ ManagedProperty'好得多來處理GET參數。另見http://stackoverflow.com/questions/4888942/viewparam-vs-managedpropertyvalue-param-id –
BalusC
2011-12-23 11:56:48