正如@BalusC在这里指出How to pass an iterated parameter via ajax to a backing bean method,可以将整个对象作为EL中的参数传递。
在JSF2中,使用action=#{bean.method(object)}
有效,但我不明白如何。
各种版本的JSF (JSF doc)的文档说明action
attrubute:
表达式必须求值为不带参数的公共方法
为什么action=#{bean.method(object)}
有效?
是否可以使用此技术进行重复使用,或者在将来的版本中无法使用?
修改:
另外,正如@ vasil-lukach所说,EL的文件允许它。事实上,如(EL doc)中所述,使用EL2.2,可以使用:
<h:commandButton action="#{trader.buy('SOMESTOCK')}" value="buy"/>
这两个规格是否一致?
答案 0 :(得分:1)
调用的方法有两个版本。如果EL表达式根本不包含任何参数,则调用第一个。在这种情况下,调用的方法确实不能包含任何参数。在actionListener
的情况下,它必须具有完全规定的事件参数。
如果提供参数,那么这些参数将由EL实现本身绑定,并且将调用与这些参数对应的bean中的方法。在这种情况下,JSF本身提供的任何参数(如事件实例)都将丢失。