加载Datatable后触发JavaScript操作

时间:2012-06-10 20:02:19

标签: javascript jsf primefaces

JSF 2.1 + PrimeFaces 3.2网络应用程序中,我需要在加载p:dataTable后触发JavaScript函数。我知道这个组件中没有这样的事件,所以我必须找到一个解决方法。

为了更好地理解场景,在页面加载时不会渲染dataTable。成功登录后呈现:

<p:commandButton value="Login" update=":aComponentHoldingMyDataTable" 
                                    action="#{loginBean.login}" 
                                    oncomplete="handleLoginRequest(xhr, status, args)"/>

从上面的代码中可以看出,成功登录后我有一个JavaScript钩子,如果有任何帮助的话。 update属性强制dataTable的呈现属性重新评估:

<p:dataTable  var="person" value="#{myBean.lazyModel}" rendered="#{p:userPrincipal() != null}" />

加载数据表后,我需要在每个行项上运行一个JavaScript函数,以便订阅cometD主题。

理论上,我可以使用登录按钮的oncomplete属性来触发来自myBean的属性,以便再次检索要在dataTable中显示的值,但它并没有。看起来很优雅。

JavaScript函数应该对dataTable的每一行rowKey执行某些操作:

function javaScriptFunctionToBeTriggered(rowKey) {
    // do something
}

2 个答案:

答案 0 :(得分:3)

ajax请求完成后,oncomplete属性中的javascript方法称为 加载了dataTable后

所以你可以做到以下几点:

<p:commandButton ... oncomplete="doSomething()"/>

一切都应该正常。

答案 1 :(得分:0)

如果页面重新加载,请尝试调用文档准备好:

$(document).ready(function() {
    doSomething();
});