我目前正在尝试使用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,但这没有改变任何东西。
我的配置:
感谢您的任何建议!
祝你好运, 罗伯特
答案 0 :(得分:1)
如果您不使用任何特定范围,它将最终成为@Dependent。
我建议至少使用@RequestScoped(注意,不要使用javax.faces.bean.RequestScoped,但来自CDI的诺言!)
显然,这似乎是您使用的Weld版本中的错误。这应该在焊接-1.1.1.Final https://github.com/weld/core/tree/1.1.1.Final
中工作请尝试将您的glassfish中的焊接osgi-bundle替换为焊接1.1.1.Final
中的焊接osgi-bundlecp target / weld-osgi-bundle-1.1.1.jar /opt/sun/glassfish/glassfish/modules/weld-osgi-bundle.jar
如果有效:积分转到os890;)