Java 在JSF页面中找不到CDIBean

Java 在JSF页面中找不到CDIBean,java,jsf,jboss,cdi,Java,Jsf,Jboss,Cdi,我有一个带有el表达式的简单xhtml页面。但是这个表达式不会得到解析,也不会抛出错误 test.xhtml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ht

我有一个带有el表达式的简单xhtml页面。但是这个表达式不会得到解析,也不会抛出错误

test.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"
      xml:lang="en" lang="en">
<h:head>
    <title></title>
</h:head>
<h:body>
    test
#{ffs.count}
</h:body>
</html>
呈现的HTML输出

<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="en" lang="en"><head><link type="text/css" rel="stylesheet" href="/Games/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />
    <title></title></head><body>
    test

</body>
</html>

测验

让我们自己做一些琐碎的调试。在浏览器中的页面上单击鼠标右键,然后查看源代码。你看到了什么?您是否看到未解析的JSF源代码或其生成的HTML输出?如果您看到未经解析的源代码,那么JSF根本就没有运行,这与相当困难的“JSF不工作”语句有很大不同。您基本上是直接请求原始源代码,而无需调用JSF的
FacesServlet
。我通过
FacesServlet
URl调用它。因此,您可以在上面看到的html输出中没有未解析的el语句。但是Bean还有其他输出,因此,与您的问题标题所暗示的相反,JSF工作得非常好。我建议修改你的标题。您的问题只是在EL范围中找不到CDIBean。您是否在web应用程序中启用了CDI?存在一个beans.xml。找不到的Bean不应该抛出
PropertyNotFoundException
PropertyNotFoundException
仅在找不到属性时抛出,而不是在找不到基时。在您的例子中,基础(托管bean)不存在于EL范围中的任何地方。当找不到基时,EL不会抛出任何异常(除非需要写入属性)。因此,名为的
@没有完成它的工作。因此,CDI没有正确安装/启用。这完全超出了JSF的范围。如果您尝试使用JSF的
@ManagedBean
呢?如果这样做行得通,那么您肯定可以排除JSF的原因。
<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="en" lang="en"><head><link type="text/css" rel="stylesheet" href="/Games/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />
    <title></title></head><body>
    test

</body>
</html>