首页 文章

在ViewScoped JSF Bean中注入的EJB引用丢失

提问于
浏览
0

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

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

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

一旦我将ViewScoped的bean切换回RequestScoped,一切正常 .

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

谢谢 .

1 回答

  • 1

    CDI作为一个框架本身对Views没有任何了解 . 因此,注入 @ViewScoped bean将无法正常工作 .

    这是将JSF和CDI结合使用的主要缺点之一 . 但你不是第一个遇到这个问题的人 .

    如果您坚持使用JSF 2.1实现,那么像Apache CODISeam 3这样的框架将以某种方式扩展您的CDI,因此您也可以在 @ViewScoped beans中使用 @Inject .

    如果你能够升级到JSF 2.2(我建议你这样做),这个CDI扩展将是JSF实现的原生部分,你可以在没有进一步使用的情况下同时使用它们 . 见this explanation .

相关问题