2012-03-06 60 views
4

我在Netbeans 6.9中创建了一个JSF 2.0项目。我开始使用CDI。创建项目后,当我尝试添加范围,然后我注意到它没有视图范围。我想知道对话范围和视图范围是指相同的东西吗?我可以使用对话范围代替查看范围吗?如果没有,那么我怎样才能使用视图范围与CDI。我也知道缝是解决方案,但是我怎么能用netbeans来缝。有没有用于接缝的netbeans插件? seam-3如何在JSF 2.0中使用CDI的视图范围

谢谢

回答

10

CDI没有视图范围。谈话的范围是不一样的。只要您使用相同的视图并在页面的部分或全部重新加载后仍然存在,视图范围的bean就会一直存在。

如果您想使用CDI的对话范围,您的应用程序必须设置对话的开始和结束。

根据我的经验,您可以将CDI范围与JSF的视图范围一起使用(例如,将CDI范围用于会话和应用程序bean以及您需要的JSF视图范围)。

更新: 但是,您不能将管理bean注入到CDI bean中。另一种方式工作。这是更常见的情况(从更广泛的范围注入更窄的范围)。

+0

你的意思是说我使用@managedBean而不是@named,如果我想查看范围。并在@managedBean我可以使用CDI范围。例如'@ManagedBean(name =“businessAddUpdate”) - > @ ViewScoped - > @ conversationScope-> public class .....'。 ** - >表示下一行**是吗? – Basit 2012-03-06 09:58:13

+0

请勿在同一课程的注释中混用两者。无论是其中一个还是其他。也要小心导入正确的类。 – 2012-03-06 10:15:49

+1

HHmm现在我明白了。你的意思是说,如果我想查看范围,那么我使用'@ManagedBean(JSf)',但如果我想请求或会话或对话范围,那么我使用'@Named(CDI)'。因为bean一次只能在一个范围内。是吗? – Basit 2012-03-06 10:19:37

0

只需将seam3 faces模块放入类路径或使用@ViewAccessScpoed myfaces CODI的注释即可。

+1

CODI有更好的@ViewScoped适配器,它也处理边缘情况。 AFAIK也是DeltaSpike中使用的。 – 2012-10-28 20:29:47

+0

@Dar,是的,你说得对,DeltaSpike的jsf模块正在大力开发,它将是一个很好的模块,因为CODI和煤层开发人员正在共同完成这些工作;) – Heidarzadeh 2012-10-29 05:02:49