同一个p中的多个事件:PrimeFaces中的ajax

时间:2016-02-03 11:56:03

标签: jsf primefaces

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

这样的事情:

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

2 个答案:

答案 0 :(得分:8)

我知道它是后来的但是我发现并且这样做的方法,你只需要输入p:ajax的N个标签,即:

<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>

答案 1 :(得分:2)

面对同样的问题并遇到了这篇文章。经过微不足道的调查,同一个p:ajax&#34; -approach中的多个事件将无效。至少对于测试的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.");
        }
    }