我试图通过而不在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