Java JSF不报告未定义的bean

Java JSF不报告未定义的bean,java,jsf,el,javabeans,Java,Jsf,El,Javabeans,我开始学习Java、JSF2和JPA2,并从“宠物目录”示例项目开始。我使用Eclipse+Glassfish 因此,我有一个JSF视图页面,其中包含以下行: <h:outputText value="Item #{catalog.pagingInfo.firstItem + 1} .. #{cataloTYPO.pagingInfo.lastItem} of #{catalog.pagingInfo.itemCount}"/> cataloTYPO不存在,它不是一个bean,

我开始学习Java、JSF2和JPA2,并从“宠物目录”示例项目开始。我使用Eclipse+Glassfish

因此,我有一个JSF视图页面,其中包含以下行:

<h:outputText value="Item #{catalog.pagingInfo.firstItem + 1} .. #{cataloTYPO.pagingInfo.lastItem} of #{catalog.pagingInfo.itemCount}"/>

cataloTYPO不存在,它不是一个bean,不是类,什么都不是。问题是JSF似乎对它非常满意,并输出“Item 1..of 29”,我希望它会引发异常或至少将问题写入日志,但什么也没有发生

我试图用谷歌搜索这个问题,但似乎没有人发现

谢谢你的帮助


编辑:或者,这是正常行为吗?

这不是JSF特有的。这是特定于EL(那些
{}
事物)的。它的设计是完全安全的。如果作用域中没有可用的内容,即
null
,则它将不采取进一步的操作。它不打印任何内容,并且不会抛出
NullPointerException
。这在允许
为空的情况下特别有用


如果仍要引发异常或警告报告,则必须编写自己的
ELResolver
,当解析值变为
null
时,它会执行此操作。您可以找到一篇关于为JSF实现自己的应用程序的文章。

感谢您的帮助。考虑到Java通常是不容忍错误的(与PHP相比),这对我来说是相当意外的。我认为这种行为适合于生产阶段,但不适合于开发阶段……EL本身就是一种完整的语言。