Primefaces 什么是p:treeTable';s rowKey和TreeNode.rowKey代表什么?

Primefaces 什么是p:treeTable';s rowKey和TreeNode.rowKey代表什么?,primefaces,Primefaces,两者几乎都没有文档记录(大部分信息可以在我查看的用户指南中找到) 该属性记录为 RowKey应该是数据模型中的唯一标识符,由datatable用于查找所选的 排。您可以使用rowKey属性或绑定数据模型来定义此键 它实现了org.primefaces.model.SelectableDataModel 我不明白的是: 在p:dataTable上有一个rowKey属性,而不是在p:treeTable上,但是用于构造树表的root的TreeNode具有rowKey属性 然后,在org.primef

两者几乎都没有文档记录(大部分信息可以在我查看的用户指南中找到)

该属性记录为

RowKey应该是数据模型中的唯一标识符,由datatable用于查找所选的 排。您可以使用rowKey属性或绑定数据模型来定义此键 它实现了org.primefaces.model.SelectableDataModel

我不明白的是:

  • p:dataTable
    上有一个
    rowKey
    属性,而不是在
    p:treeTable
    上,但是用于构造树表的
    root
    TreeNode
    具有rowKey属性
  • 然后,在
    org.primefaces.component.api.UITree
    上还有另一个属性
    rowKey

    • 对于JSF中指定的值和
    • 一旦选择来自
      String selection=params.get(clientId+“_selection”)
      TreeRenderer.decodeSelection
      中作为逗号分隔的选定行列表
    rowKey值和所选行列表(以逗号分隔的字符串形式)乍一看没有共同点,如何使用相同的属性

  • TreeNode.rowKey
    被设置为对象的hashCode(唯一性得到保证)时,它似乎被用作数组访问的索引,数组访问可预测地以

    java.lang.ArrayIndexOutOfBoundsException: -307459552
        at java.util.ArrayList.elementData(ArrayList.java:422)
        at java.util.ArrayList.get(ArrayList.java:435)
        at org.primefaces.component.api.UITree.findTreeNode(UITree.java:245)
        at org.primefaces.component.api.UITree.setRowKey(UITree.java:116)
        at org.primefaces.component.treetable.TreeTableRenderer.encodeNode(TreeTableRenderer.java:525)
    
  • SelectableDataModel
    可能与误解有关,这取决于上述文档是否也适用于
    TreeNode.rowKey


    • 我又读了一遍你的问题,我觉得你把事情搞混了(如果我错了,请纠正我)

      首先,根据我的经验和文档,我没有看到在
      p:treeTable
      中使用SelectableDataModel,也没有定义rowKey属性(选中6.1和6.2文档)。您在问题中发布的关于定义的引用来自
      p:dataTable


      无需在UITree的任何位置使用rowKey属性。它由组件内部设置,并使用渲染时间将
      数据行键
      属性放置在各个节点上。此属性的值将在选择步骤中再次使用。节点的数据rowkey值被发送到服务器,并在那里进行解码以在服务器端树中找到相应的节点。模型的嵌套/层次结构以rowkey的值进行编码。例如,0_2_1是根节点(0),然后是它的第三个子节点(2)和第二个子节点(1),其中_是分隔符。因此,当您开始手动设置时,整个概念都会崩溃,导致您在问题中发布的错误。

      我再次阅读了您的问题,我得到的印象是您在混淆问题(如果我错了,请纠正我)

      首先,根据我的经验和文档,我没有看到在
      p:treeTable
      中使用SelectableDataModel,也没有定义rowKey属性(选中6.1和6.2文档)。您在问题中发布的关于定义的引用来自
      p:dataTable


      无需在UITree的任何位置使用rowKey属性。它由组件内部设置,并使用渲染时间将
      数据行键
      属性放置在各个节点上。此属性的值将在选择步骤中再次使用。节点的数据rowkey值被发送到服务器,并在那里进行解码以在服务器端树中找到相应的节点。模型的嵌套/层次结构以rowkey的值进行编码。例如,0_2_1是根节点(0),然后是它的第三个子节点(2)和第二个子节点(1),其中_是分隔符。因此,当您开始手动设置此选项时,整个概念都会发生故障,导致您在问题中发布的错误。

      开发人员似乎系统性地拒绝了对文档的增强请求。请张贴证实的参考资料。。。我对这些很好奇,也许我能帮上忙。对于SelectableDataModel,我很难理解您到底不了解什么。在那之后你所描述的正是它所做的。它有助于选择行。划船(为datatable中的行设置一个键,在浏览器中设置一个view source,您将在datatable源上看到一个data rowkey属性。它在某种程度上做了转换器为其他组件所做的事情。@Kukeltje的评论读起来好像一般没有兴趣改进文档,除非提供了PRs,这远远超过了from理想。我扩展了使我困惑的
      rowKey
      属性的用例,并添加了该属性的第三个用法(现在作为数组索引),这在很大程度上增加了我的困惑。也许你可以解释一下:)关于您发布的关于文档的一个示例,我必须同意Thomas Andrasko的观点。我个人没有错过这个“问题”中要求的内容。如果为一个事件完成,那么应该为所有事件完成。IDE中的代码完成以及文档中已有的内容应该足够了(我没有听到(m)任何其他人提到这一点。因此,他们说:“如果有人提供,我们愿意对文档进行更改/添加,但我们认为没有必要,我们会将时间花在其他问题上。”如果您查看发行列表,您将看到文档的增强请求似乎被开发人员系统性地拒绝。请发布经证实的参考资料…我对这些很好奇,也许我可以帮忙。我很难理解您对SelectableDataModel到底有什么不了解。之后您会描述什么这正是它所做的。它有助于选择行。rowkey(数据表中的行的键,请执行查看)