晚上好。我被要求更新一个在RichFaces中实现的web应用程序。该应用程序在复合组件中有一个丰富的extendedDataTable,用于显示一些可搜索的数据。我被要求实现的更新是在提交搜索时自动选择表中的第一行。我找不到从后台bean中做到这一点的方法,但我确实看到它可以用JavaScript API来完成,通过调用selectRow和setActiveRow函数,但问题是我需要表的'clientId',如果我检查DOM并获得表的客户端id,让我们说"垃圾:tableId",我硬编码到函数中,
#{rich:component('junk:tableId')}.selectRow(0);
#{rich:component('junk:tableId')}.setActiveRow(0});
一切都如我所愿。为了检索clientId,我找到了rich:clientId函数,并且我确认rich:clientId('tableId')返回的是我从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')')}
这应该会给你一个解析错误。单引号标记的是字符串,而不是方法参数。