0

我目前正在尝试使用 Apache MyFaces CODI。我设法使用@Page 和一个返回类的操作方法创建了一个简单的工作类型安全导航。

但是,当我使用例如 MyPageBean.class 添加@PageBean-Annotation 时,当我尝试导航到页面时会引发以下异常:

exception
javax.servlet.ServletException: WELD-001324 Argument bean must not be null
root cause
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001324 Argument bean must not be null

我的页面代码是:

@Page
@PageBean(MyPageBean.class)
public final class MyPage implements ViewConfig, Serializable {

}

和我的页面豆:

public class MyPageBean implements Serializable {
    @InitView
    protected void initView() { }

    @PrePageAction
    protected void prePageAction() { }

    @PreRenderView
    protected void preRenderView() { }
}

Facelets页面调用的Action-Method:

public Class<? extends ViewConfig> nextPage() {
    return MyPage.class;
}

pageBean-Class (MyPageBean) 是否需要有特定的注解或接口?我已经尝试过使用@Model,但这并没有改变任何东西。

我的配置:

  • Jave EE6 with Weld(使用焊接原型创建)
  • Glassfish 3.1 社区版(Netbeans 7 附带的版本)
  • JSF2.0 (Mojarra 2.1)
  • EJB 3.1
  • MyFaces CODI 0.9.4
  • RichFaces 4.0.0.Final

感谢您的任何建议!

最好的问候,罗伯特

4

1 回答 1

1

如果您不使用任何特定范围,它将最终成为@Dependent。

我建议至少使用@RequestScoped(注意,不要使用javax.faces.bean.RequestScoped,而是来自CDI的注释!)


Oki 现在与 Gerhard 进行了交谈,因为他在 Weld 上对 CODI 有更多的经验。

显然,这似乎是您使用的 Weld 版本中的错误。这应该在weld-1.1.1.Final https://github.com/weld/core/tree/1.1.1.Final中工作

请尝试将 glassfish 中的weld-osgi-bundle 替换为weld 1.1.1.Final 中的那个

cp 目标/weld-osgi-bundle-1.1.1.jar /opt/sun/glassfish/glassfish/modules/weld-osgi-bundle.jar

如果可行:学分转到 os890 ;)

于 2011-04-27T12:15:43.090 回答