2011-02-02 45 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