今天我遇到了这个真正困扰我的问题,因为几乎代码已经可以工作了(即使在恢复到旧版本后也停止工作)。
我正在访问 Facelets 页面上的 Spring-Bean。 Spring 将这些对象包装在代理中以使用方面和其他一些东西。
问题是,我在尝试访问 bean 的属性时遇到异常。异常是这样的:
javax.el.PropertyNotFoundException: /customers.xhtml @23,27 value="#{customerBean.customer}": Property 'customer' not found on type $Proxy88
我确定 (!!) 那里有相应的 getter/setter 方法。 到目前为止我尝试过的事情:
- 将应用程序部署到另一个 tomcat 安装
- 清除所有 tomcat 缓存,webapp 目录
- 清理 eclipse 项目
- 使用 javap 检查相应的方法(以及那里的方法/属性)
- 改变bean的范围
- 更改bean的类名
- 更改spring bean-id
- 更改bean的serialVersionUID
无论我做什么,类加载器都无法正确包装或加载该类。
有人知道什么会导致这样的问题吗?我不知道还能尝试什么,所以非常感谢任何建议!
提前致谢!
问候, 罗伯特
最佳答案
我还使用 Tomcat 7、JSF 2、Spring 3、Spring Security 3。 我有同样的问题。更改编织配置没有帮助。
我最终的解决方案是在 spring 配置中添加一行:
<aop:aspectj-autoproxy proxy-target-class="true"/>
你的类路径中需要 CGLIB。
希望这对某人有帮助。 :)
关于Java/JSF/Tomcat/Spring - 代理对象具有与原始对象不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460599/