单击 Primefaces 数据表中的另一行时不要取消选择行

Do not unselect rows when clicking on another rows in Primefaces datatable

我正在使用 Primefaces 3.5 数据 Table。 table 启用了多选模式。基本上,table 与 [this showcase][1] 中的最后一个相同。所以 table 是这样定义的

<p:dataTable id="myTable" var="item" value="#{myController.items}" selection="#{myController.selectedItems}" rowKey="#{item.id}">
        <p:column selectionMode="multiple"/>
        <p:column headerText="Id"> 
...

因此,当用户通过单击复选框选择了一些行,然后不小心单击了一行时,除了用户最后单击的行之外,所有选定的行都变为未选中。

问题是:是否有任何变通方法来保持选中的行,即使用户单击复选框外的行也是如此?

我的一些观察:

如果您阅读了更新的文档,您会发现它在更新的版本中得到支持。因此,要为 3.5 修复此问题,请查看较新版本的源代码,了解它们如何 'fixed' 并创建一个 js 补丁……当然,您也可以尝试使用较新的 PF 版本。做后者有很多优势。

post在这里(或试图创建)一个补丁(或尝试创建一个)的原因是它太复杂了post这里和imo超出了SO的范围

从问题中复制(其中 OP 作为 'answer' 添加):

按照 Kukeltje 的建议,我创建了 primefaces.js 带有修改后的 DataTable 小部件的补丁。为此,我从 jar 文件中复制了 primefaces.js,进行了修改并将其放在以下目录下:

webapp
 |-- META-INF
 |-- WEB-INF
 |-- resources
 |    |-- primefaces
 |    |    `-- primefaces.js

我在 primefaces.js 中所做的修改只是从 onRowClick: function(e, d, a) 函数中删除 this.unselectAllRows()