6
從我使用spring MVC和hibernate的經驗中,我知道在呈現視圖時尋址到延遲集合時發生懶惰異常問題。 它通過引入OpenSessionInViewInterceptor
或OpenSessionInViewFilter
來修復它純粹的spring + hibernate世界,從而爲每個請求啓用一個hibernate會話。在使用Grails時,我應該關心在視圖中打開會話嗎?
所以問題是:我應該關心grails中的這個問題,或者默認情況下啓用這樣的每會話一次會話行爲。
如果這不是grails默認值,請提供一些代碼來實現此行爲。
謝謝。
對於視圖狀態,當我將域實例設置爲PageScope變量(來自taglib)並嘗試在視圖中訪問它時,爲什麼我會得到Lazy初始化異常,無法初始化代理無錯誤。會話是否仍然處於打開狀態,因爲標記位於呈現爲視圖狀態一部分的gsp(佈局)中。 您可以回答http://stackoverflow.com/questions/21456784/grails-webflow-error-could-not-initialize-proxy-no-session-when-trying-to-ac – 2014-01-30 12:45:02
我不確定細節,但這與Sitemesh和頁面渲染順序有關。我認爲在控制器操作運行後,但在GSP呈現之前,會話會關閉。一般來說,最好將所有必要的數據傳遞給視圖以避免此問題和其他問題。通過允許在GSP中發生延遲加載,您正在從GSP執行數據庫請求,這是一般不好的做法 – 2014-01-30 13:05:26
問題是,我需要訪問佈局中的某個域。在這種情況下,正確的做法是什麼? – 2014-01-30 13:11:04