【问题标题】:How to @Autowire a BeanFactory in a Managed Bean(JSF)如何在托管 Bean(JSF) 中 @Autowire BeanFactory
【发布时间】:2014-01-27 20:07:30
【问题描述】:

当我需要 Spring 管理的 bean 中的 BeanFactory 时,我使用:

private @Autowired BeanFactory factory;

如何在托管 Bean 中实现这一点? 我试过了:

 @ManagedProperty(value = "#{BeanFactory}")
private BeanFactory beanFactory;// (the property has getters and setters)

但该属性为空。

我在 faces-config 中有一个 EL 解析器:

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

谢谢你,对不起我的英语不好:)

【问题讨论】:

  • 为什么你需要BeanFactory 通常你应该避免直接使用BeanFactory。
  • 有没有更好的方法来创建一个bean?
  • 为什么需要BeanFactory 来创建一个bean?您可以简单地使用 @ManagedProperty 从 applicationcontext 中获取所需的 bean!
  • 不直接使用BeanFactory,如何获得原型bean?

标签: java spring jsf jsf-2


【解决方案1】:

看来您的@ManagedProperty 标记可能是问题所在,因为(value = "#{BeanFactory}") 应该是(value = "#{beanFactory}"),除非您的BeanFactory 类在其中的@ManagedBean 标记中专门命名为“BeanFactory”。

默认情况下,带有@ManagedBean 注解的bean 将被映射到它们的类名,但第一个字符将是小写的,例如:“BeanFactory”映射为“beanFactory”,FooBean 变为“fooBean”。

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2023-03-05
    • 2016-07-09
    • 1970-01-01
    • 2012-03-24
    • 2012-10-13
    • 2011-07-10
    • 2012-10-03
    相关资源
    最近更新 更多