2011-02-02 89 views
4

我开始学习Java,JSF2和JPA2,并使用“Pet Catalog”示例项目开始。我使用Eclipse + Glassfish。JSF不报告未定义的bean

所以我有JSF视图页面下面一行:

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

cataloTYPO不存在,它不是一个豆,没有阶级,没有什么。问题是JSF似乎完全满意并输出“Item 1 .. of 29”我期望它会引发异常,或者至少将问题写入日志中,但没有任何反应。

我试图谷歌这个问题,但似乎没有人。

感谢您的帮助。

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

回答

6

这不是特定于JSF的。这是特定于EL(那些#{}东西)。它被设计成为nullsafe。如果范围内没有任何东西可用,即它是null,那么它将不采取进一步的行动。它不打印任何东西,并且不会抛出NullPointerException。这在允许empty的情况下特别有用。

如果您想提出异常或警告报告,那么您必须编写自己的ELResolver,当解析值变为null时,就会这样做。关于为JSF实现自己的ELResolver的好文章可以在here找到。

+0

谢谢你的帮助。鉴于Java通常是不容错误的(与例如PHP相比),这对我来说是非常意外的。我认为这种行为适合于生产阶段,但对于开发阶段来说不太合适...... – Tomik 2011-02-03 12:01:14