使用RichFaces时,可以在选择单行时(通过单击行)执行JavaScript函数,并将选定的行号作为参数传递,如下所示:
<rich:extendedDataTable
rowKeyVar="row"
onRowClick="executeMeOnRowSelection(#{(row})"...>
我需要将其迁移到Primefaces。根据{{3}} Primefaces本身不提供此功能,但可以使用Primefaces Extensions。但是,当我这样尝试时:
<p:dataTable rowIndexVar="row" selectionMode="single">
<pe:javascript event="rowSelect" execute="executeMeOnRowSelection(#{(row})"/>
...看起来Primefaces生成的JavaScript回调没有获得所选的行号,但总是使用第一个行号调用(查看生成的页面会显示函数参数的硬编码值) executeMeOnRowSelection
)。
编辑:更准确地说,直接在p:dataTable标记下使用时,似乎不会评估#{row}变量。在p:column标记内使用时可以正确解析,但两者都
<pe:javascript event="rowSelect" execute="executeMeOnRowSelection(#{(row})"/>
,就此而言,
<p:ajax event="rowSelect" oncomplete="alert(#{row});" />
最后将#{row}替换为空字符串(两者都作为p:dataTable标记的直接子项放置)。
我将pe标签与p:dataTable
结合使用的方式是否有误?有替代解决方案吗?