我有一个数据表(primefaces 4.0),我正在使用widgetVar在更新数据后应用重新过滤表。
我需要在doSomething()
真正完成过滤表并更新它时才调用函数employeesDataTable_WV.filter();
。
在此链接中显示了工作filter
的功能
https://searchcode.com/codesearch/view/2686053/
它似乎做了ajax请求而不是更新组件。
这是我的示例代码
<h:form id="form">
<p:remoteCommand name="myRemote" actionListener="viewEmployeesManagedBean.refreshEmployees"
update=":form:employeesDataTable"
oncomplete="employeesDataTable_WV.filter();doSomething();"/>
<p:dataTable id="employeesDataTable"
value="#{viewEmployeesManagedBean.employees}" var="employee" widgetVar="employeesDataTable_WV">
[...]
</p:dataTable>
</h:form>
我需要在employeeDataTable_WV.filter()函数过滤和更新数据表后才调用doSomething函数。
我的所有测试都不起作用,并且在更新数据表之前总是调用doSomething
函数。
非常感谢您的帮助。
答案 0 :(得分:1)
您应该做的是向oncomplete
添加一个ajax事件处理程序,并将p:remoteCommand
放入过滤器事件的<p:ajax event="filter" oncomplete="doSomething()" />
并将其从p:ajax
中删除
filter()
如果您不希望/需要对服务器进行roundTrip,则可以将filter()
替换为PrimeFaces Extensions pe:javascript
如果您只想在widgetVar上直接调用doSomething()
时发生这种情况,只需在调用 <p:remoteCommand ...
oncomplete="mySemaphore = true;employeesDataTable_WV.filter();"/>
function doSomething() {
if(mySemaphore == true;) {
...
mySemaphore = false;
}
// just do nothing if called from editing in one of the filter fields
}
之前直接设置信号量,然后检查Animation animation = AnimationUtils.loadAnimation(this, R.style.styleAnimationResourceEarned);
是否为 animation.setAnimationListener(new Animation.AnimationListener() {
@Override public void onAnimationStart(Animation animation) {
}
@Override public void onAnimationEnd(Animation animation) {
//Dismiss it
}
@Override public void onAnimationRepeat(Animation animation) {
} });
集。
{{1}}
这应该适用于4.0,但也适用于当前(在回答时)6.1-SNAPSHOT(最有可能超出)的后续版本
另见