Apache MyFaces CODI PageBean:“参数bean不能为空”

时间:2011-04-27 11:41:42

标签: jsf-2 cdi myfaces jboss-weld codi

我目前正在尝试使用Apache MyFaces CODI。我设法使用@Page创建一个简单的工作Typesafe-Navigation和一个返回Class的动作方法。

然而,当我添加一个@ PageBean-Annotation时,例如MyPageBean.class,当我尝试导航到页面时抛出以下异常:

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 {

}

和我的Page-Bean:

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

感谢您的任何建议!

祝你好运, 罗伯特

1 个答案:

答案 0 :(得分:1)

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

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


Oki,现在和Gerhard谈过,因为他在Weld上有更多的CODI经验。

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

中工作

请尝试将您的glassfish中的焊接osgi-bundle替换为焊接1.1.1.Final

中的焊接osgi-bundle

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

如果有效:积分转到os890;)