10

今天我遇到了这个问题,这真的让我很烦恼,因为几乎代码已经工作(并且即使在恢复到旧版本后也停止工作)。

我正在访问 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-caches,webapp-directory
  • 清理 eclipse 项目
  • 使用 javap 检查相应的方法(以及那里的方法/属性)
  • 改变bean的范围
  • 更改bean的类名
  • 更改spring bean-id
  • 更改 bean 的 serialVersionUID

无论我做什么,类加载器都以某种方式未正确包装或未正确加载。

有谁知道什么会导致这样的问题?我不知道还要尝试什么,所以非常感谢任何建议!

提前致谢!

问候,罗伯特

4

5 回答 5

2

好的,我发现了如何使用 AspectJ weaving 管理方法安全性。

您至少需要使用 Spring-security 3.0.5,您需要在 spring-security.xml 中使用正确的模式,至少:
http://www.springframework.org/schema/security/spring-security-3.0。 5.xsd

您需要添加 spring-security-aspects 作为依赖项:

<dependency>
   <groupId>org.springframework.security</groupId>
   <artifactId>spring-security-aspects</artifactId>             
   <version>3.0.5.RELEASE</version>
</dependency>

比您可以将新属性“模式”添加到全局方法安全标签:

<global-method-security pre-post-annotations="enabled" mode="aspectj"/>

我认为您还必须添加启用 AspectJ 编织的标准 Spring-configuration.xml 标记:

<context:load-time-weaver aspectj-weaving="on"/>

并且它也很好地摆脱(删除) aop-proxy 标签:

<aop:aspectj-autoproxy proxy-target-class="true"/>

此外,最好使用 Spring-security 3.1.0,但至少也必须使用 Spring 3.0.7。

希望这可以帮助 :)

于 2012-01-19T17:16:54.967 回答
2

我还使用 Tomcat 7、JSF 2、Spring 3、Spring Security 3。我也遇到了同样的问题。改变编织配置没有帮助。

我的最终解决方案是在 spring 配置中添加一行:

<aop:aspectj-autoproxy proxy-target-class="true"/>  

Jou 在你的类路径上需要 CGLIB。
希望这可以帮助某人。:)

于 2012-01-17T16:59:48.920 回答
1

如果未正确配置加载时间编织,通常会发生这些错误。确保您不仅配置了加载时间编织器,而且还加载了适当的 java 代理,或者应用程序服务器为您完成了这些。

有关如何配置此环境的更多信息,请参阅 spring 文档,例如第 7.8.4.6 章环境特定配置。虽然这涵盖了 AOP 的加载时间波动主题,但对于需要加载时间编织的 spring 的其他部分,它是相同的配置。

于 2011-06-30T21:31:10.477 回答
0

尝试删除具有 oneToMany 字段的 customerBean 的域。

于 2011-07-26T00:19:54.490 回答
0

我认为您的 bean 已实现Serializable。我今天遇到了这个问题,Serializable 对代理做了一些奇怪的事情,我的方法都无法访问。摆脱 Serializable ,它应该可以工作。

于 2013-08-09T12:00:01.863 回答