在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
}
答案 0 :(得分:3)
ajax请求完成后,oncomplete
属性中的javascript方法称为, 加载了dataTable后
所以你可以做到以下几点:
<p:commandButton ... oncomplete="doSomething()"/>
一切都应该正常。
答案 1 :(得分:0)
如果页面重新加载,请尝试调用文档准备好:
$(document).ready(function() {
doSomething();
});