我正在使用Spring 3和JSF 2创建一个应用程序。我使用https://github.com/michail-nikolaev/primefaces-spring-scopes中的自定义ViewScope实现。我注册了自定义范围。
问题是,当我尝试访问使用视图范围bean的页面时,我得到以下异常:
INFO - ViewScope - Creating bean {editUser}
INFO - EditUser - EditUser() - class[com.myapp.beans.EditUser@f0ac4], rewId[null]
INFO - ViewScope - registerDestructionCallback for bean editUser
INFO - ViewScope - Session event bound sessionBindingListener
INFO - ViewScope - Bean created {com.myapp.beans.EditUser@f0ac4}
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 :(得分:0)
看起来您的问题是由基于JDK的代理引起的,以处理@Transactional
注释。
JDK代理仅为类实现的 interfaces 创建(在您的情况下为Serializable)
。)因此,您的代理只有来自Serializable
接口的方法(根本没有)
要解决此问题,您需要切换到另一种代理模式(使用cglib),例如使用:
@EnableTransactionManagement(proxyTargetClass = true)
。另外,将cglib:cglib-nodep:2.2
添加到项目的依赖项中。
答案 1 :(得分:0)
这是一个ViewScope问题,它会创建虚拟版本,请在此处阅读:http://forum.primefaces.org/viewtopic.php?f=3&t=24082