Vaadin 瓦丁树展开问题
我正在使用Vaadin tree组件处理网页中的树菜单GUI。我发现了一个问题。我有三个层次树菜单。当我第一次展开第二层树时,一切正常。但如果我展开另一个树菜单,它与第一个展开的菜单位于同一层,那么第一个展开的菜单将被折叠。崩溃还没有完全结束。有时它折叠树的一部分,有时它折叠以前扩展的整个菜单。有人遇到这个问题吗Vaadin 瓦丁树展开问题,vaadin,Vaadin,我正在使用Vaadin tree组件处理网页中的树菜单GUI。我发现了一个问题。我有三个层次树菜单。当我第一次展开第二层树时,一切正常。但如果我展开另一个树菜单,它与第一个展开的菜单位于同一层,那么第一个展开的菜单将被折叠。崩溃还没有完全结束。有时它折叠树的一部分,有时它折叠以前扩展的整个菜单。有人遇到这个问题吗 HierarchicalContainer container = new HierarchicalContainer(); container addContainerPropert
HierarchicalContainer container = new HierarchicalContainer();
container addContainerProperty("caption", String.class, "");
container addContainerProperty("type", String.class, "");
container addContainerProperty("parameter", String.class, "");
Tree tree = new Tree();
tree.setImmediate(true);
tree.setItemCaptionPropertyId("caption");
tree.setContainerDataSource(container);
我使用nodeExpand方法在用户单击根节点时动态添加子节点
节点展开方法:
public void nodeExpand(ExpandEvent event) {
Item item = getContainer().getItem(event.getItemId());
getTree().setValue(item);
String type = String.valueOf(
item.getItemProperty("type").getValue()).trim();
String caption = String.valueOf(
item.getItemProperty("caption").getValue()).trim();
if (type.equalsIgnoreCase("modelSeries")) {
ModelVariantDataWebservice mvws = new ModelVariantDataWebservice();
mvws.init();
ModelVariantDataResponse mvdr = mvws.doWSCall(caption);
if (mvdr.getModelList() != null
&& mvdr.getModelList().size() != 0) {
String variant;
for (ModelVariant mv : mvdr.getModelList()) {
variant = mv.getVariant().trim();
getContainer().addItem(variant);
getContainer().getItem(variant).getItemProperty("type")
.setValue("modelVariant");
getContainer().getItem(variant)
.getItemProperty("caption").setValue(variant);
getContainer().setParent(variant, caption);
}
}
} else if (type.equalsIgnoreCase("modelVariant")) {
BodyTrimComboDataWebservice btcws = new BodyTrimComboDataWebservice();
btcws.init();
BodyTrimComboDataResponse btcdr = btcws.doWSCall(caption.trim()
.replaceAll(" ", "%20")
+ "&series="
+ String.valueOf(container.getParent(caption))
.replaceAll(" ", "%20"));
if (btcdr.getModelSeriesVariantlList() != null
&& btcdr.getModelSeriesVariantlList().size() != 0) {
String bodyTrimTitle;
String bodyColour;
for (BodyTrimComboExtension btc : btcdr
.getModelSeriesVariantlList()) {
bodyColour = btc.getBodyColour();
bodyTrimTitle = "(" + btc.getBodyColour() + " "
+ btc.getTrimColour() + ") "
+ btc.getBodyColourDesc() + "-"
+ btc.getTrimColourDesc();
getContainer().addItem(bodyColour);
getContainer().getItem(bodyColour)
.getItemProperty("type").setValue("bodyTrim");
getContainer().getItem(bodyColour)
.getItemProperty("caption")
.setValue(bodyTrimTitle);
getContainer().getItem(bodyColour).getItemProperty("parameter").setValue(caption+";"+btc.getBodyColour()+"-"+btc.getBodyColourDesc()+";"+btc.getTrimColour()+"-"+btc.getTrimColourDesc());
getContainer().setParent(bodyColour, caption);
getContainer().setChildrenAllowed(bodyColour, false);
}
}
}
}
它可能有助于提供vaadin版本和一些示例代码,您可以在其中试用…我正在使用vaadin 7.3.4。抱歉,我是stackoverflow的新用户。问题可能在您的nodeExpand方法中,因此您应该显示一些代码。对代码的一些注释可能无法解决您的问题,但可能仍然有帮助。您正在使用setParent中的变量标题(childId,parentId)引用parentId。这可能会起作用,但当你做各种修剪之类的事情时,可能会引起一些问题。最好使用已有的event.getItemId()。此外,addItem还返回一个item对象,您可以使用它,而不必一直调用getContainer().getItem(variant)