【发布时间】:2011-11-21 12:08:05
【问题描述】:
根据here 和here 发布的建议,我查看并安装了MyFaces CODI 与我的应用程序。我最担心的是克服 Weld 实现 @ConversationScoped 功能的缺点。经过一些小问题后,我让它在我的 GlassFish 3.1 开发平台上运行,然后我将所有 bean 转换为使用
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
最后,我现在似乎并没有比以前走得更远。我不必再调用 conversation.begin() 方法了,这很好,但是 bean 在浏览器离开页面并返回后会徘徊。
我所希望的是与 CDI 一起使用的 JSF 2.0 @ViewScoped 的功能。一旦用户离开页面,如果用户回来,支持 bean 应该被丢弃并重新创建。有没有办法用 CODI 做到这一点?
顺便说一句,文档说它将获取@ViewScoped 注释并正确处理它们。我试过了,但 Weld 不会部署它。
附:我正在使用 myfaces-extcdi-dist-jsf20 0.9.5 版。我尝试安装核心和 JSF 2 可选模块 akibe,但它不会部署在我的 GlassFish/Weld 平台上。非常感谢这里的任何建议。
更新 1:我最终尝试了 CODI 支持的 ViewAccessScope 注释,这似乎符合我的要求。
跟进问题。 Apache 维护的 maven 存储库的最新捆绑包是 0.9.5 -- 有人可以发布获取最新版本的 pom.xml 段吗?
【问题讨论】:
-
在返回之前调用 conversation.close() - 确保您导入了正确的注释 org.apache... 而不是 javax... - 请参阅cwiki.apache.org/confluence/display/EXTCDI/… 或改用 ViewAccessScope。我们在 Glassfish 3.1.1 中使用:repo2.maven.org/maven2/org/apache/myfaces/extensions/cdi/… 没有问题。 myfaces-extcdi-bundle-jsf20-1.0.1.jar 是您唯一需要的 jar。
-
@DarWhi 如果您将答案作为答案发布,我会为您进行绿色检查。请查看我的问题的更新。
-
一体化包的 Maven 配置记录在 cwiki.apache.org/confluence/display/EXTCDI/…