gpt4 book ai didi

java - ZK 内部类树属性不可读

转载 作者:行者123 更新时间:2023-11-30 08:26:38 24 4
gpt4 key购买 nike

我遇到了和这个问题几乎一样的问题: Property not readable on a inner class in a TreeModel

但同样的解决方案似乎并不适用。

我有一棵树,当我实现我的实体和我的 TreeModel 时,它们工作得很好,在我的 .zul 文件中,我的“数据”属性在树单元上找不到​​。

部分代码如下:

-运行@AfterCompose 的结构实现:

 private void montarEstrutura(){

Unidade ub1 = new Unidade();
ub1.setParent(null);
ub1.setNumero("NBase");
ub1.setDescricao("DBase");

Unidade ub2 = new Unidade();
ub2.setParent(ub1);
ub2.setNumero("N002");
ub2.setDescricao("D002");

Unidade ub4 = new Unidade();
ub4.setParent(ub2);
ub4.setNumero("N004");
ub4.setDescricao("D004");

Unidade ub6 = new Unidade();
ub6.setParent(ub4);
ub6.setNumero("N006");
ub6.setDescricao("D006");

Unidade ub7 = new Unidade();
ub7.setParent(ub4);
ub7.setNumero("N007");
ub7.setDescricao("D007");

Unidade ub8 = new Unidade();
ub8.setParent(ub4);
ub8.setNumero("N008");
ub8.setDescricao("D008");

Unidade ub5 = new Unidade();
ub5.setParent(ub2);
ub5.setNumero("N005");
ub5.setDescricao("D005");

Unidade ub3 = new Unidade();
ub3.setParent(ub1);
ub3.setNumero("N003");
ub3.setDescricao("D003");


List<Unidade> lub3 = new ArrayList<Unidade>();
lub3.add(ub6);
lub3.add(ub7);
lub3.add(ub8);

ub4.setUnidades(lub3);

List<Unidade> lub2 = new ArrayList<Unidade>();
lub2.add(ub4);
lub2.add(ub5);
ub2.setUnidades(lub2);

List<Unidade> lub1 = new ArrayList<Unidade>();
lub1.add(ub2);
lub1.add(ub3);
ub1.setUnidades(lub1);

unidadeTreeModel = new UnidadeTreeModel(ub1);
tree.setModel(unidadeTreeModel);

}

-这个实体很长,所以我会剪掉它:

@Entity
@Audited
public class Unidade extends AbstractSuseTools{

private String numero;
private String descricao;

@OneToMany
private List<Unidade> unidades = new LinkedList<Unidade>();

public String getNumero() {
return numero;
}

public void setNumero(String numero) {
this.numero = numero;
}

public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {
this.descricao = descricao;
}
public List<Unidade> getUnidades() {
return unidades;
}

public void setUnidades(List<Unidade> unidades) {
this.unidades = unidades;
}
}

这是 .zul 文件,它不读取实体的属性:

<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('br.com.simplesmenteuse.viewmodel.basico.OrganizacaoViewModel')" >
<tree id="tree" model="@load(vm.unidadeTreeModel)" selectedItem="@bind(vm.unidadeSelected)" >
<treecols>
<treecol width="100px" label="Editar" />
<treecol width="100px" label="Excluir" />
<treecol hflex="4" label="Número" />
<treecol hflex="1" label="Nome" />
</treecols>
<template name="model">
<treeitem>
<treerow>
<treecell label="Editar"/>
<treecell label="Excluir"/>
<treecell label="@load(each.numero)"/>
<treecell label="@load(each.descricao)"/>
</treerow>
</treeitem>
</template>
</tree>

我的树模型:

    public class UnidadeTreeModel extends AbstractTreeModel<Unidade> {
/**
*
*/
private static final long serialVersionUID = 3854683349236034878L;

public UnidadeTreeModel(Unidade unidade){
super(unidade);
}

public boolean isLeaf(Unidade node) {
return getLevel(node.toString()) >= 4; //at most 4 levels;
}
public Unidade getChild(Unidade parent, int index) {
if(((Unidade)parent).getUnidades() != null && ((Unidade)parent).getUnidades().size() > index)
return ((Unidade)parent).getUnidades().get(index);
else
return null;
}
public int getChildCount(Unidade parent) {
return (((Unidade)parent).getUnidades() != null)?((Unidade)parent).getUnidades().size():0;
}
public int getIndexOfChild(Unidade parent, Unidade child) {
for (int i = 0; i<parent.getUnidades().size();i++) {
if (child.equals(parent.getUnidades().get(i))) { return i;}
}
return -1; //or throw exception what you want.
}
private int getLevel(String data) {
for (int i = -1, level = 0;; ++level)
if ((i = data.indexOf('.', i + 1)) < 0)
return level;
}

};

错误:

Now it don't show any errors, just don't get the sub-levels of the object.

我真的不明白树是如何完成这一切的,所以我不明白为什么它不可读。

最佳答案

只需删除您的 zul 中的这些数据:

 <treecell label="@load(each.numero)"/>
<treecell label="@load(each.nome)"/>

关于java - ZK 内部类树属性不可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338933/

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