在PrimeFaces中,同一个p:ajax中可以有多个事件。

15

在同一个p:ajax中是否可以有多个事件?

像这样:

<p:ajax event="firstEvent,secondEvent..." listener="doSomething();" />

2
三个字母……T R Y……(而“doSomething();”永远不会起作用。如果创建伪代码,请至少做得更好一些;-)) - Kukeltje
2
嘿,谢谢,但这里的重点是展示事件定义或我的意思。当然,尝试过的人发现它不起作用。问题在于是否存在某种类似于此伪代码中的命名形式。如果我没有表达清楚,对不起。 - waickem
如果它不起作用,而且你找不到任何关于这个的文档,你唯一能做的就是尝试使用不同的纯JSF示例。如果在那里也不起作用,那么可能就是不支持。顺便说一下,JSF的规范是公开的。 - Kukeltje
我知道我来晚了,但似乎这是不可能的:https://forum.primefaces.org/viewtopic.php?p=8902#p8902 - Nakarukatoshi Uzumaki
2个回答

11

我知道现在已经很晚了,但是我找到了一种方法来做这个。你只需要放置N个p:ajax标签,即:

<p:calendar id="startDate" value="#{bean.date}"
    pattern="dd.MM.yyyy"
    validator="#{bean.checkDate}">
    <p:ajax update="dialog:endDate" event="dateSelect" /> 
    <p:ajax update="dialog:endDate" event="keyup" /> 
</p:calendar>

3
问题是:“在PrimeFaces中的同一个p:ajax标签中实现多个事件”,您的回答是使用正常方式,当然可以解决。但问题在于如何只使用一个p:ajax标签以完全不同的方式来实现它。 - Kukeltje
2
这是一个有用的答案。 - K.Nicholas
我只是想确认一下-这帮助了我。你知道,通过空格、冒号、逗号等分开...我只是想确定这是不可能的。 - YoYo

3
面对同样的问题并遇到了这篇文章。经过简单调查,“同时使用多个p:ajax事件”的方法不起作用。至少在测试过的Primefaces 5.3版本中不支持。 会出现以下异常:
javax.faces.view.facelets.TagException: <p:ajax> Event:firstEvent,secondEvent is not supported.

AbstractBehaviorHandler 类中的一些源代码:

 ClientBehaviorHolder holder = (ClientBehaviorHolder) parent;

    String eventName = getEventName();

    if (null == eventName) {
        eventName = holder.getDefaultEventName();
        if (null == eventName) {
            throw new TagException(this.tag, "Event attribute could not be determined: "  + eventName);
        }
    } else {
        Collection<String> eventNames = holder.getEventNames();
        if (!eventNames.contains(eventName)) {
            throw new TagException(this.tag,  "Event:" + eventName + " is not supported.");
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接