【发布时间】: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。