将JSF ManagedBeans更改为Spring组件

时间:2012-10-10 14:04:23

标签: spring jsf aop

我正在使用JSF和Spring一段时间后我发现我需要在我的托管bean中使用Spring的AOP,但是当我更改它们时:

@ManagedBean("title")
@RequestScope
public class Title{
   ...
}

(无缝地工作)到

@Component
@Scope("request")
public class Title{
   ...
}

尽管spring尝试按照我的需要创建这些bean(因为它设置了一些Autowired属性),但它找不到我的.xhtml文件中引用的一些属性,并且例如说:

org.apache.myfaces.view.facelets.el.ContextAwarePropertyNotFoundException:   javax.el.PropertyNotFoundException: Property 'selectedUser' not found on type $Proxy50

任何人都能提供帮助吗?

2 个答案:

答案 0 :(得分:1)

如果要将Spring AOP应用于实现任何接口的类,则应将该类的所有公共方法包含在由其实现的接口中,或者将AOP配置为proxy-target-class = "true"

有关此行为的说明,请参阅7.6 Proxying mechanisms

答案 1 :(得分:0)

如果您的xhtml jsf页面无法访问您的Spring Bean,请检查faces-config.xml中是否有以下配置:

<application>
     <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>