p:ajax 中的 actionListener

actionListener in p:ajax

提问人:Ande Hofer 提问时间:6/8/2020 更新时间:6/8/2020 访问量:602

问:

我对 p:ajax 中的属性 actionListener 有点困惑,它没有出现在 primefaces 5.2.2 的 taglib 中,Eclipse 也这么认为,因为它将其标记为不存在。primefaces-p:ajax attributesn

但是代码有效,Bean 中的方法使用 ActionEvent 参数调用。

<p:ajax event="change" actionListener="#{bean.actionlistenerMethod}" update="stuff" />

所以我的问题是,actionListener 如何工作?

Primefaces:5.2.2 JSF:2.1.16

JBoss EAP 6.1

primefaces JSF-2 XHTML 操作侦听器

评论

0赞 Ande Hofer 6/8/2020
更正:未调用带有 ActionEvent 参数的方法,因此该属性被忽略...
1赞 Kukeltje 6/8/2020
如果要迁移 richfaces 3.3.3 应用程序,为什么要迁移到 PF 5.2.2 而不是 8?
0赞 Ande Hofer 6/8/2020
因为公司中的所有 primefaces 应用程序都是 primefaces 5.2.2。这并不是一个合乎逻辑的原因,只是它是怎么回事......
1赞 Kukeltje 6/8/2020
然后打破这个......自 5.2 以来,已经有了很大的改进......

答:

2赞 Przemek 6/8/2020 #1

正如您在 taglib 和文档中看到的那样,要使用的正确属性是“listener”。 也许他们在后端覆盖了“actionListener”,只是为了省略这种错误。

评论

0赞 Ande Hofer 6/8/2020
您好,问题是我正在迁移一个 richfaces 3.3.3 项目,我宁愿不要过多地接触豆子。因此,当我使用 listener 属性时,我不能使用 bean 方法,因为它需要一个 ActionEvent 参数。所以我对actionListener的工作并不不满意,但我看不出是怎么回事。
0赞 Przemek 6/8/2020
即使在 PF 8 中,我们的代码中也有这个。“listener”的调用不带 ActionEvent 参数,最好与 “event” 结合使用。“actionListener” 不在 TagLib 中,但可以工作并发送 ActionEvent 参数。也许只是看看这里:stackoverflow.com/a/21451599/223788