我正在尝试使用 JSF 和 CDI 创建一个简单的“hello world”测试,但是 JSF 页面没有显示来自 CDI bean 的变量。如果 bean 更改为托管 bean,则显示该变量。
该测试使用 Apache MyFaces 2.1.5 并在 WebSphere 应用程序服务器 8.5 上运行。
毫无疑问,这个问题有一个简单的原因,但我无法确定为什么这适用于托管 bean 而不是 CDI bean。有人可以建议我哪里出错了吗?
测试中的文件内容如下
测试.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 文件。