gpt4 book ai didi

java - ZK TreeitemRenderer - render() 未调用

转载 作者:行者123 更新时间:2023-12-02 00:18:35 26 4
gpt4 key购买 nike

我已经和这个人斗争了一段时间了。我的 TreeitemRenderer 如下:

public class PermissionTreeRenderer implements TreeitemRenderer<PermissionTreeNode> {

@Override
public void render(final Treeitem treeItem, PermissionTreeNode node, int arg) throws Exception {
final PermissionTreeNode ptn = (PermissionTreeNode)node;
Treerow treeRow = new Treerow();

treeItem.setOpen(ptn.isOpen());
treeItem.appendChild(treeRow);
PermissionItem current = (PermissionItem) ptn.getData();
treeRow.appendChild(new Treecell(current.getName()));

}
}

我的 BasicComposer(扩展 GenericForwardComposer)具有这两个属性

private PermissionTreeModel treeModel;
private TreeitemRenderer treeitemRenderer = new PermissionTreeRenderer();

带有 getter 和 setter。

在我的 .zul 中,我的树看起来像这样:

<tree id="permissionTree" width="100%"
model="@{win$composer.treeModel}"
treeitemRenderer="@{win$composer.treeitemRenderer}">
<treecols>
<treecol label="Item" width="400px" />
<treecol label="Wert" />
</treecols>
</tree>

到目前为止,我通过测试看到的是,他加载了模型(他进入了 getter),但没有加载 treeitemRenderer。无论我做什么,渲染方法都不会被调用。

编辑:我的问题是我只填充了根节点(用于测试),并且它至少需要一个子项来绘制...

嗯@dennis:我会尝试使用你所说的新方法,所以这是我的代码:

<tree id="permissionTree" width="100%"
model="@bind(vm.treeModel)" style="text-align:left;">
<treecols>
<treecol label="Item" width="400px" />
<treecol label="Wert" />
<treecol label="Einfügen" width="100px" />
</treecols>
<template name="model" var="node" status="s">
<treeitem open="@bind(node.open)">
<treerow>
<treecell label="@bind(s.index)" />
<treecell label="@bind(node.data)" />
<treecell>
<hbox>
<button label="Index"
onClick="@command('showIndex', index=s.index)" />
<button label="Delete"
onClick="@command('delete', node=node)" />
<button label="Add After"
onClick="@command('addAfter', node=node)" />
<button label="Add Before"
onClick="@command('addBefore', node=node)" />
</hbox>
</treecell>
</treerow>
</treeitem>
</template>
</tree>

但它不会再用数据填充我的树了。哦,那个 status 变量是什么?我需要在其他文件中进行准备吗?

编辑:问题已解决,必须应用 org.zkoss.bind.BindComposer

谢谢大家!

最佳答案

两个注意事项:

  1. treeitemRenderer 已弃用,取而代之的是 itemRenderer
  2. 检查您的 treeModel 是否为 null,因为如果 Tree.getModel() 不为 null,则设置用于渲染每个项目的渲染器。

关于java - ZK TreeitemRenderer - render() 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com