在 a JSF 2.1
+ PrimeFaces 3.2
web 应用程序中,我需要在p:dataTable
加载 a 后触发 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
,以便再次检索要在数据表中显示的值,但这似乎不是很优雅。
rowKey
JavaScript 函数应该对 dataTable 的每一行做一些事情:
function javaScriptFunctionToBeTriggered(rowKey) {
// do something
}