0

現在、Apache MyFaces CODI を少し試しています。@Page とクラスを返すアクション メソッドを使用して、簡単に機能する Typesafe-Navigation を作成することができました。

ただし、たとえば 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 を使用してみましたが、何も変わりませんでした。

私の構成:

  • Weld を使用した Jave EE6 (weld-archetype を使用して作成)
  • Glassfish 3.1 Community Edition (Netbeans 7 に同梱されているもの)
  • JSF2.0 (モハラ 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 は、Weld での CODI の経験が豊富なため、Gerhard と話しました。

どうやらこれは、使用している 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 に答える