是否可以在同一个 p:ajax 中包含多个事件?
这样的事情:
<p:ajax event="firstEvent,secondEvent..." listener="doSomething();" />
答案 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.");
}
}