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 ファイルを作成しました。