2012-02-24 58 views
-1

我有一個處理程序級的JSF頁面,但是當我註釋類或@Transactional任何方法,我得到這個錯誤,在JSF頁面訪問任何屬性時:JSF處理類與事務方法

引起:javax.el.PropertyNotFoundException:/[email protected],67 value =「#{handler.startPage}」:在類型$ Proxy115上未找到屬性'startPage'

任何想法爲什麼?

感謝

回答

1

當您使用@Transactional,春天將創建註釋類的代理,它將會取代原來的對象。它使用默認的代理創建算法來使用依賴於接口的JDK代理。在處理程序的界面中,沒有getPage/setter用於startPage屬性,因此是異常。

您可以將getter/setter添加到接口或強制基於類的代理。爲了執行CGLIB代理在上下文文件下面放:

<tx:annotation-driven proxy-target-class="true"/> 
+0

嗨,我已經不這樣做,它的工作原理,但處理的消氣功能檸慢...像100毫秒......一個jsf-列表獲取值40次需要4secs,任何想法爲什麼cglib類的速度很慢?編輯:對不起我的錯,我註釋了整個班級作爲交易,所以每一個得到有一個新的交易創建 – wutzebaer 2012-03-09 15:52:27

+0

這聽起來像你打開數據庫連接在JSF調用的getter是一個非常糟糕的主意。他們不能被標記爲交易。您應該在創建bean時準備數據,並且getter只應返回內存中可用的數據。你也可以試着懶得取數據。 – mrembisz 2012-03-09 15:59:56

+0

已經解決了,我從類中刪除了交易標記,並將其放到正確的方法中,謝謝 – wutzebaer 2012-03-09 16:33:45