RichFaces 4 ExtendedDataTable - 以编程方式选择行

RichFaces 4 ExtendedDataTable - Selecting rows programmatically

晚上好。我被要求更新在 RichFaces 中实现的 Web 应用程序。该应用程序在显示一些可搜索数据的复合组件内部有一个 rich:extendedDataTable。我被要求实施的更新是在提交搜索时自动选择 table 中的第一行。我无法从支持 bean 中找到执行此操作的方法,但我确实看到可以通过调用 selectRow 和 setActiveRow 函数使用 JavaScript API 来完成,但问题是我需要 table 的 'clientId',如果我检查 DOM 并获取 table 的客户端 ID,比方说 "junk:tableId",我很难将其编码到函数中,

#{rich:component('junk:tableId')}.selectRow(0); 
#{rich:component('junk:tableId')}.setActiveRow(0});

一切如我所愿。为了检索 clientId,我找到了 rich:clientId 函数,并确认 rich:clientId('tableId') returns 与我从 DOM 获得的 clientId 相同,所以我更新了我原来的函数调用

#{rich:component('rich:clientId('tableId')')}.selectRow(0); 
#{rich:component('rich:clientId('tableId')')}.setActiveRow(0});

而且它不起作用,现在我不确定要尝试什么。有谁知道我可以尝试什么?

您可以直接使用 #{rich:component('tableId')},该函数无论如何都会在内部调用 clientId

#{rich:component('rich:clientId('tableId')')}

这应该会让您遇到解析错误。单引号标记的是字符串,而不是方法参数。