这是代码:
<p:ajax event="eventResized" process="@this calendar" listener="#{bean.eventResized}" oncomplete="resizeComplete()"/>
eventReized
由 EventResizeBehavior
调用从 AjaxBehaviorEvent
扩展而来它包含一些属性。可以进去看看吗<p:ajax....>
调用它的值并将结果传递给 oncomplete="resizeComplete(result)"
类似的东西
<p:ajax event="eventResized" process="@this calendar" listener="#{bean.eventResized}" oncomplete="resizeComplete(#{eventResized.id == 0})"/>
最佳答案
PrimeFaces 不支持它。 oncomplete
中的任何 EL 表达式属性在该 HTML 文档的呈现响应期间被立即评估,而不是在关联的 ajax 调用的 oncomplete 期间。基本上,由 oncomplete
生成的 JavaScript 代码属性包含页面加载期间的旧值。
您最好的选择是使用 RequestContext#addCallbackParam()
将属性添加到 PrimeFaces 特定 args
在 oncomplete
中可用的对象范围。
RequestContext.getCurrentInstance().addCallbackParam("result", eventResized.getId() == 0);
<p:ajax ... oncomplete="resizeComplete(args.result)" />
另一种方法是使用
RequestContext#execute()
而不是 oncomplete
以编程方式指示 PrimeFaces 在完成 ajax 请求时执行一段 JavaScript。RequestContext.getCurrentInstance().execute("resizeComplete(" + (eventResized.getId() == 0) + ")");
关于jsf - 如何在操作方法期间更新的 PrimeFaces oncomplete 属性中使用 EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30190214/