Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee JSF页面未从CDIBean检索变量_Jakarta Ee_Jsf 2_Websphere_Cdi - Fatal编程技术网

Jakarta ee JSF页面未从CDIBean检索变量

Jakarta ee JSF页面未从CDIBean检索变量,jakarta-ee,jsf-2,websphere,cdi,Jakarta Ee,Jsf 2,Websphere,Cdi,我试图使用JSF和CDI创建一个简单的“hello world”测试,但是JSF页面没有显示来自CDIBean的变量。如果bean更改为托管bean,则会显示变量 该测试使用ApacheMyFaces2.1.5,并在WebSphereApplicationServer8.5上运行 毫无疑问,这个问题有一个简单的原因,但我无法确定为什么它可以与托管bean而不是CDIBean一起工作。有人能告诉我哪里出了问题吗 测试中文件的内容如下 test.xhtml <!DOCTYPE html PUB

我试图使用JSF和CDI创建一个简单的“hello world”测试,但是JSF页面没有显示来自CDIBean的变量。如果bean更改为托管bean,则会显示变量

该测试使用ApacheMyFaces2.1.5,并在WebSphereApplicationServer8.5上运行

毫无疑问,这个问题有一个简单的原因,但我无法确定为什么它可以与托管bean而不是CDIBean一起工作。有人能告诉我哪里出了问题吗

测试中文件的内容如下

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>

我还在WEB-INF中创建了一个空的beans.xml文件。

看起来WAS8支持MyFaces 2.0.x,并且在使用2.1.x时确实会导致CDI出现问题。因此,您最好的选择是降级到2.0.x,直到支持2.1.x


您可以在ICEFACES上阅读这些问题,JIRA

看起来您在xhtml页面中使用了错误的大小写。应该是myVal而不是myVal。

在WebSphere论坛上发布了一个类似的问题,发现CDI只支持默认的JSF实现(基于MyFaces)


有关更多详细信息,请参阅。

我使用MyFaces 2.0.2创建了一个新项目,但问题仍然存在。有趣的是,这次不是以一个空的beans.xml文件开始,所以我添加了以下内容
您可以运行其中一个示例吗。更多的信息我已经关注很久了。最后意识到我的应用程序使用的是Mojara,而不是容器提供的myfaces。非常感谢。
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;
    }
}