0

我已经看到很多关于将 EJB 注入 ViewScoped JSF 管理的 bean 的讨论。这样做似乎是可以接受的做法。

我正在尝试将我的应用程序中的一个 bean 从 RequestScoped 更改为 ViewScoped 以添加一些额外的所需功能。

我修改了 EJB 类以确保所有内容都是可序列化的。创建我的 JSF bean 时,最初可以访问 EJB。但是,当用户操作触发 bean 中尝试调用 EJB 方法的方法时,会引发 NullPointerException。

一旦我将 bean 从 ViewScoped 切换回 RequestScoped,一切正常。

这可能是正在使用的 JSF 实现中的错误吗?此应用程序使用 MyFaces 2.1.12 并在 Websphere 7.0 上运行。

谢谢。

4

1 回答 1

1

CDI 作为一个框架本身对视图一无所知。因此注入一个@ViewScopedbean是行不通的。

这是同时使用 JSF 和 CDI 的主要缺点之一。但你不是第一个遇到这个问题的人。

如果您坚持使用 JSF 2.1 实现,Apache CODISeam 3等框架将以某种方式扩展您的 CDI,因此您也可以@Inject@ViewScopedbean 中使用。

如果您能够升级到 JSF 2.2(我建议您这样做),那么这个 CDI 扩展将成为 JSF 实现的本机部分,您可以毫不费力地将两者一起使用。请参阅此说明

于 2013-10-18T18:44:32.473 回答