Java ZK TreeitemRenderer-render()未调用
我和这个人斗争了很长一段时间了。 我的TreeitemRenderer如下所示: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 {
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>