Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ZK TreeitemRenderer-render()未调用_Java_Zk - Fatal编程技术网

Java ZK TreeitemRenderer-render()未调用

Java ZK TreeitemRenderer-render()未调用,java,zk,Java,Zk,我和这个人斗争了很长一段时间了。 我的TreeitemRenderer如下所示: public class PermissionTreeRenderer implements TreeitemRenderer<PermissionTreeNode> { @Override public void render(final Treeitem treeItem, PermissionTreeNode node, int arg) throws Exception {

我和这个人斗争了很长一段时间了。 我的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()));

    }
}
有能手和二传手

在my.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。无论我做什么,都不会调用render方法

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

嗯@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>

但它再也不能用数据填充我的树了。哦,那状态变量是什么?我需要在其他文件中做准备吗

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


谢谢大家

如果您使用的是ZK 6,您可以使用新的绑定机制,它比ZK 5中的绑定机制更简单,并且您不需要编写渲染器。下面是代码片段,显示了外观

如果您使用的是ZK 6,那么您可以使用新的绑定机制,它比ZK 5中的绑定机制更简单,并且您不需要编写渲染器。下面是代码片段,显示了两个注释:

  • treeitemRenderer
    被弃用,取而代之的是
    itemrrenderer
  • 检查您的
    treeModel
    是否为
    null
    ,因为
    设置了渲染器,如果Tree.getModel()不为null,则用于渲染每个项目。
  • 注二:

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

  • 你用的是哪个版本的ZK?你用的是哪个版本的ZK?首先:谢谢你的回答,我想我会用这个。编辑了我的startpost。非常感谢你对新方法的帮助。首先:谢谢你的回答,我想我会同意的。编辑了我的startpost。非常感谢您对新方法的帮助。
    <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>