我試圖通過而不在JSF參數2.0
#{myBean.foo()}
從JSF 2.0的facelet調用參數方法MethodExpression的調用(沒有任何周圍標記)。根據Burns/Schalk:完整參考:JSF 2.0(可能爲第126頁,#{userBean.pullValuesFromFlash()})。
但是,框架將表達式作爲值表達式,因此認爲foo應該是一個bean屬性。 在JBoss 7.0.1(和6,太)我得到一個
「類 '......' 沒有財產 '富'」
錯誤消息。
看來日在'el'標籤維基頁面上有個不好的例子。即'$ {bean.list.size()}'。它不會工作,原因有二:首先 - 因爲內聯表達式被視爲值表達式,而第二 - javax.el.ListELResolver'首先工作,並嘗試通過索引'size'獲取列表中的項(使用NumberFormatException失敗)。 – Andrey
你說得對,特別的例子很糟糕,特別是因爲使用了'ListELResolver'。我修復了這個wiki來刪除它。但另一個原因並非如此,因爲該方法不是「無效」的。 – BalusC
維基看起來確定知道。但關於內聯el表達式。當方法有參數,然後調用它(例如$ {bean.find(param.id)}),如果沒有參數,那麼解析器試圖找到一個屬性($ {bean.find()}將失敗,因爲沒有getFind方法,而不考慮find()返回類型)。有趣的是在這方面的規格。 – Andrey