4

JSF と CDI を使用して単純な「hello world」テストを作成しようとしていますが、JSF ページに CDI Bean の変数が表示されません。Bean がマネージド Bean に変更された場合、変数が表示されます。

このテストでは Apache MyFaces 2.1.5 を使用し、WebSphere アプリケーション サーバー 8.5 で実行しています。

問題には単純な理由があることは間違いありませんが、マネージド Bean では機能するのに CDI Bean では機能しない理由を特定できませんでした。誰かが私が間違っているところを提案してもらえますか?

テストでのファイルの内容は次のとおりです。

test.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<h:body>
    <h:outputText>#{testBean.myval}</h:outputText>
</h:body>
</html>

TestBean.java

import javax.inject.Named;
import javax.enterprise.context.RequestScoped;

@Named
@RequestScoped
public class TestBean {
    private String myVal = "Hello World";

    public String getMyVal() {
        return myVal;
    }

    public void setMyVal(String myVal) {
        this.myVal = myVal;
    }
}

また、WEB-INF に空の beans.xml ファイルを作成しました。

4

3 に答える 3

3

同様の質問を WebSphere フォーラムに投稿したところ、デフォルトの JSF 実装 (MyFaces に基づく) のみが CDI での使用をサポートされていることがわかりました。

詳細については、CDI と JavaServer Facesの統合を参照してください。

于 2012-09-19T08:53:42.380 に答える
0

xhtml ページで間違った大文字と小文字を使用したようです。myval ではなく myVal にする必要があります。

于 2012-09-11T21:06:26.877 に答える
0

WAS8 は MyFaces 2.0.x をサポートしているようで、2.1.x を使用すると CDI で問題が発生します。したがって、2.1.x がサポートされるまでは 2.0.x にダウングレードするのが最善の方法です。

これらの問題については、こちらのICEFACES JIRAで読むことができます

于 2012-09-11T01:26:23.353 に答える