NumberFormatException PrimeFaces树表

NumberFormatException PrimeFaces树表,primefaces,collapse,treetable,Primefaces,Collapse,Treetable,我目前正在使用Primefaces和treetables。我的treetable工作得很好,只有一个例外。让我举一个小例子来解释这个问题: 树桌是这样的: <p:treeTable id="treetable" value="#{bean.root}" var="node" selectionMode="single" selection="#{bean.selectedNode}"> 项目1.1 项目2.1 项目1.2 项目1.3 开始时,树已倒塌。 树表的定义如下:

我目前正在使用Primefaces和treetables。我的treetable工作得很好,只有一个例外。让我举一个小例子来解释这个问题:

树桌是这样的:

<p:treeTable id="treetable" value="#{bean.root}" var="node" selectionMode="single" selection="#{bean.selectedNode}">  
  • 项目1.1
    • 项目2.1
  • 项目1.2
  • 项目1.3
开始时,树已倒塌。 树表的定义如下:

<p:treeTable id="treetable" value="#{bean.root}" var="node" selectionMode="single" selection="#{bean.selectedNode}">  

这是treetable.js中的PrimeFaces bug

问题是因为treetable.js中的unselectAllNodes()函数没有清除selection数组变量,但退出此函数后它应该为空:

unselectAllNodes: function() {
    var selectedNodes = this.tbody.children('tr.ui-state-highlight');

    for(var i = 0; i < selectedNodes.length; i++) {
        this.unselectNode(selectedNodes.eq(i), true);
    }
}
取消选择所有节点:函数(){
var selectedNodes=this.tbody.children('tr.ui-state-highlight');
对于(变量i=0;i
当具有上一个选定行的父行展开时,不会出现此错误,因为所有可见的选定行(按ui状态突出显示属性搜索)都会取消选择,并从选择中删除数组变量。但当父行折叠时,tbody.children*('tr.ui-state-highlight')*返回空列表,selection数组变量具有以前的值加上用逗号分隔的新可选值

好消息是,从PrimeFaces4.0版本来看,这个bug已经修复。因为已经被引入释放。一个小区别:选择数组变量已被其他提交重命名为选择

unselectAllNodes: function() {
    var selectedNodes = this.tbody.children('tr.ui-state-highlight');
    for(var i = 0; i < selectedNodes.length; i++) {
        this.unselectNode(selectedNodes.eq(i), true);
    }

    this.selections = [];
    this.writeSelections();
}
取消选择所有节点:函数(){
var selectedNodes=this.tbody.children('tr.ui-state-highlight');
对于(变量i=0;i
什么是
{bean.selectedNode}
的类型?类型是树节点。
unselectAllNodes: function() {
    var selectedNodes = this.tbody.children('tr.ui-state-highlight');
    for(var i = 0; i < selectedNodes.length; i++) {
        this.unselectNode(selectedNodes.eq(i), true);
    }

    this.selections = [];
    this.writeSelections();
}