OpenSessionInViewFilter失效問題解決(SSH2)

今天在用Hibernate延遲加載時,顯示到界面出現如下問題:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

原因: 在界面加載數據時, session已經關閉,故報此錯. 此前的對象只是代理對象(只有ID值)

故使用Spring 裏的 OpenSessionInViewFilter 來解決此問題

在web.xml裏配置

<!--Hibernate Open Session in View Filter-->
<filter>
	<filter-name>hibernateFilter</filter-name>
	<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>hibernateFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

再測試, 問題依然存在,,, 納悶....... 後來分析,再google...  終於發現問題出在Struts2上....

現在的web.xml裏,我是把OpenSessionInViewFilter的配置放在Struts2後面的.

更改下前後順序, 神奇的解決了:)   正確的配置順序如下:

 

<!--Hibernate Open Session in View Filter 注意要放在Struts2配置前面-->
<filter>
	<filter-name>hibernateFilter</filter-name>
	<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>hibernateFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>  
	<filter-name>Struts2</filter-name>  
	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
</filter>  
<filter-mapping>  
	<filter-name>Struts2</filter-name>  
	<url-pattern>/*</url-pattern>  
</filter-mapping> 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章