Java JSF不报告未定义的bean
我开始学习Java、JSF2和JPA2,并从“宠物目录”示例项目开始。我使用Eclipse+Glassfish 因此,我有一个JSF视图页面,其中包含以下行: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,
<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本身就是一种完整的语言。