【问题标题】:JSF: passing whole objects along as arguments in EL is standard?JSF:在 EL 中将整个对象作为参数传递是标准的吗?
【发布时间】:2014-05-05 07:11:00
【问题描述】:

正如@BalusC 在这里指出的How to pass an iterated parameter via ajax to a backing bean method,可以在EL 中将整个对象作为参数传递。

在 JSF2 中,使用 action=#{bean.method(object)} 有效,但我不明白如何

各种版本的 JSF (JSF doc) 的文档都这样说 action 属性:

表达式必须计算为不带参数的公共方法

那么为什么action=#{bean.method(object)} 有效? 是否可以使用这种技术,或者在未来的版本中无法使用?

编辑

另外,正如@vasil-lukach 所说,EL 的文档允许这样做。其实正如(EL doc)所说,有了EL2.2,就可以使用:

<h:commandButton action="#{trader.buy('SOMESTOCK')}" value="buy"/>

这两个规范是否一致?

【问题讨论】:

  • 它不适用于 JSF2,但适用于 EL2.2。用 JSF 2.1 和 EL2.1 试试,你会看到错误。
  • 谢谢@VasilLukach。在 EL2.2 docs.oracle.com/javaee/6/tutorial/doc/bnahu.html#gjhbz 中,他们甚至在 action 中使用了带有参数化调用的示例。那么这两个标准是一致的吗?

标签: ajax jsf jsf-2 el


【解决方案1】:

调用的方法有两个版本。如果 EL 表达式根本不包含任何参数,则调用第一个。在这种情况下,被调用的方法确实不能有任何参数。对于actionListener,它必须具有完全规定的事件参数。

如果您提供参数,那么这些参数将由 EL 实现本身绑定,并且将调用与这些参数对应的 bean 中的方法。在这种情况下,JSF 本身提供的任何参数(如事件实例)都会丢失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多