2012-02-24 38 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