2013-03-17 45 views
1

我使用Spring 3和JSF 2創建應用程序。我使用自定義的ViewScope實現,從https://github.com/michail-nikolaev/primefaces-spring-scopes。我註冊了自定義範圍。

的問題是,當我試圖訪問這裏查看範圍的bean頁面用於我得到以下異常:

INFO - ViewScope - Creating bean {editUser} 
INFO - EditUser - EditUser() - class[[email protected]], rewId[null] 
INFO - ViewScope - registerDestructionCallback for bean editUser 
INFO - ViewScope - Session event bound sessionBindingListener 
INFO - ViewScope - Bean created {[email protected]} 
2013-03-18 00:30:30 com.sun.faces.lifecycle.ProcessValidationsPhase execute 
WARNING: /editUser.xhtml @10,78 value="#{editUser.rewId}": The class '$Proxy115' does not have the property 'rewId'. 
javax.el.PropertyNotFoundException: /editUser.xhtml @10,78 value="#{editUser.rewId}": The class '$Proxy115' does not have the property 'rewId'. 

bean時是會話範圍的一切工作正常。

我將不勝感激您的幫助。

回答

0

看起來像是由生成的基於JDK的代理引起的問題,用於處理@Transactional註釋。

JDK代理只創造了該類實現接口(在你的情況Serializable)。所以,你代理具有Serializable接口(不是全部)僅方法。

要解決,你需要的問題通過切換到另一種代理模式(使用CGLIB),例如: @EnableTransactionManagement(proxyTargetClass = true)此外,添加cglib:cglib-nodep:2.2到項目的依賴

+0

我已經設置好了,訪問器方法在那裏,必須是別的東西,另一個簡單的bean工作正常,因爲視圖範圍很大 – Mungo 2013-03-18 09:49:20

+1

看起來像是因爲一些代理服務器超過了bean。你能提供EditUser代碼嗎? – 2013-03-18 11:41:33

+0

ping-ping? (順便說一句,我是你用於ViewScope的代碼的作者,所以想要找到修復) – 2013-03-18 17:09:28