我有一個viewcoped bean,它通過f:viewparam接收參數並在模型中使用它們設置值。在頁面回發之後,參數從url中消失,但由初始參數設置的模型值以某種方式保留。JSF2-回發後的viewcoped bean的viewParam的行爲
這是一個保存參數的安全方式,或者我應該在回發中重寫url,以便保持初始參數後續調用?
參數如何保留?在視圖狀態?
我有一個viewcoped bean,它通過f:viewparam接收參數並在模型中使用它們設置值。在頁面回發之後,參數從url中消失,但由初始參數設置的模型值以某種方式保留。JSF2-回發後的viewcoped bean的viewParam的行爲
這是一個保存參數的安全方式,或者我應該在回發中重寫url,以便保持初始參數後續調用?
參數如何保留?在視圖狀態?
這裏的f:viewParam文件說什麼:
[...]此標記導致UIViewParameter作爲當前視圖的元數據進行連接。因爲UIViewParameter擴展了UIInput,所以任何UIInput標籤的所有屬性和嵌套子內容在這個標籤上也是有效的。
這意味着<f:viewParam>
value
屬性將與請求參數進行更新,存儲在視圖狀態,重新設定/當你再次提交頁面重新驗證。
阿爾揚Tijms具有完整的故事在這裏:http://arjan-tijms.omnifaces.org/2011/07/stateless-vs-stateful-jsf-view.html
簡而言之:使用@ViewScoped
bean是完全正常的,但如果您使用的是昂貴的識別/該值轉換注意,它會被稱爲再次從該頁面的每次回發。如果你想避免這種情況,可以看看來自BalusC的this article,它解釋了OmniFaces的無狀態替代方案o:viewParam。