【问题标题】:Inject spring custom scope bean in JSF 2 application在 JSF 2 应用程序中注入 spring 自定义范围 bean
【发布时间】:2012-03-07 00:57:52
【问题描述】:

我正在 JSF2 - Spring 应用程序中使用自定义 Spring 托管视图范围 bean。我想将 bean 注入到请求范围 bean 中。但是,每次调用请求范围 bean 时,我都会获得自定义视图范围 bean 的新实例。

我的视图范围bean如下

@Component("registration")
@Scope("view")
public class RegistrationBean implements Serializable

我的请求范围bean如下

@Component("registrationController")
@Scope("request")
public class RegistrationController implements Serializable
{
@Autowired(required=false) 
@Qualifier("registration")  
private RegistrationBean registration;  
  .....

}

如果我直接在我的 facelets 中使用视图范围 bean,我的所有值都会被保留。但是,如果我通过我的请求范围 bean 访问相同的值,则不会保留这些值。

根据我的研究,我可以看到将 JSF 托管视图范围 bean 注入 JSF 托管请求范围 bean 的示例,但是我找不到上述问题的任何实例。

非常感谢您了解此问题的任何信息。提前致谢。

【问题讨论】:

  • 只是想补充一点,如果我将自定义视图范围 bean 转换为标准会话范围 bean,那么一切正常。我可以从我的请求范围 bean 中正确访问它。
  • 您是否直接访问 facelets 中的 View 作用域 bean?如果你不这样做,在你的请求范围的 Bean 中可能会创建一个新实例(我不确定 Spring 在 JSF 之上是如何做的)。但是作为请求中创建的任何内容,它都会随着请求结束而被销毁。下一个请求只是重新创建一个新的“注册”实例。
  • 我确实在我的 facelets 中直接访问了视图范围的 bean。我想在执行操作时访问控制器中的视图 bean。

标签: spring jsf-2


【解决方案1】:

您可以查看我的 Spring 视图范围实现。

查看我的 github javaplugs/spring-jsf 存储库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多