GWT单元树创建问题

GWT单元树创建问题,gwt,uibinder,Gwt,Uibinder,我正在尝试为我的GWT应用程序创建一个CellTree,并在初始化Showcase[ie onModuleLoad]期间创建一个CellTree 我得到以下错误。我所要做的就是复制GWT应用程序并从头开始构建 17:47:04.519 [ERROR] [ChannelView] Failed to create an instance of 'com.app.capture.client.ClientFactory' via deferred binding java.lang.Illega

我正在尝试为我的GWT应用程序创建一个CellTree,并在初始化Showcase[ie onModuleLoad]期间创建一个CellTree 我得到以下错误。我所要做的就是复制GWT应用程序并从头开始构建

17:47:04.519 [ERROR] [ChannelView] Failed to create an instance of 
'com.app.capture.client.ClientFactory' via deferred binding 
java.lang.IllegalStateException: TreeNode no longer exists.
at com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.assertNotDestroyed(CellTreeNodeView.java:653)
at com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.setChildOpen(CellTreeNodeView.java:642)
at com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.setChildOpen(CellTreeNodeView.java:637)
at com.app.capture.client.ui.MainMenuViewImpl.<init>(MainMenuViewImpl.java:35)
at com.app.capture.client.ClientFactory.<clinit>(ClientFactory.java:13)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:665)
at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:468)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.shared.GWT.create(GWT.java:57)
at com.google.gwt.core.client.GWT.create(GWT.java:85)
at com.app.capture.client.ChannelViewEntryPoint.onModuleLoad(ChannelViewEntryPoint.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:406)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Thread.java:722)
17:47:04.519[错误][ChannelView]无法创建的实例
通过延迟绑定的“com.app.capture.client.ClientFactory”
java.lang.IllegalStateException:TreeNode不再存在。
位于com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.assertnotdestromed(CellTreeNodeView.java:653)
位于com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.setChildOpen(CellTreeNodeView.java:642)
位于com.google.gwt.user.cellview.client.CellTreeNodeView$TreeNodeImpl.setChildOpen(CellTreeNodeView.java:637)
在com.app.capture.client.ui.MainMenuViewImpl.(MainMenuViewImpl.java:35)
位于com.app.capture.client.ClientFactory(ClientFactory.java:13)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:264)
位于com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:665)
位于com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:468)
位于com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
位于com.google.gwt.core.shared.gwt.create(gwt.java:57)
位于com.google.gwt.core.client.gwt.create(gwt.java:85)
位于com.app.capture.client.ChannelViewEntryPoint.onModuleLoad(ChannelViewEntryPoint.java:59)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:406)
位于com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
位于com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
运行(Thread.java:722)
UI由两个垂直并排放置的面板组成。左侧是导航面板,我想在这里添加celltree

celltree视图模型类为

package com.app.capture.client.ui.model;
导入java.util.ArrayList;
导入java.util.List;
导入com.google.gwt.cell.client.AbstractCell;
导入com.google.gwt.cell.client.cell;
导入com.google.gwt.cell.client.TextCell;
导入com.google.gwt.safehtml.shared.SafeHtmlBuilder;
导入com.google.gwt.view.client.ListDataProvider;
导入com.google.gwt.view.client.SingleSelectionModel;
导入com.google.gwt.view.client.TreeViewModel;
公共类MainMenuViewModel实现TreeViewModel{
私有静态类类别{
私有最终字符串名;
私有最终列表项=新的ArrayList();
公共类别(最终字符串名称){
this.name=名称;
}
公共列表getItems(){
归还此物品;
}
公共字符串getName(){
返回此.name;
}
public void addCategoryItem(字符串项){
项目。添加(项目);
}
}
私人最终名单类别;
private final SingleSelectionModel selectionModel=新的SingleSelectionModel();
公共主菜单视图模型(){
categories=newarraylist();
类别apg=新类别(“A”);
apg.addCategoryItem(“11”);
apg.addCategoryItem(“22”);
类别频道=新类别(“B”);
channel.addCategoryItem(“33”);
渠道。添加类别项目(“44”);
渠道。添加类别项目(“55”);
类别。添加(apg);
类别。添加(频道);
}
@凌驾
公共节点信息getNodeInfo(T值){
如果(值==null){
//根水平
ListDataProvider dataProvider=新的ListDataProvider(类别);
Cell Cell=新的AbstractCell(){
@凌驾
public void render(com.google.gwt.cell.client.cell.Context上下文、类别值、安全HTMLBuilder sb){
if(值!=null){
sb.appender(value.getName());
}
}
};
返回新的DefaultNodeInfo(数据提供者,单元格);
}else if(类别的值实例){
ListDataProvider dataProvider=新的ListDataProvider(((类别)值).getItems());
返回新的DefaultNodeInfo(dataProvider,new TextCell(),selectionModel,null);
}
返回null;
}
@凌驾
公共布尔isLeaf(对象值){
if(字符串的值实例){
返回true;
}
返回false;
}
}

我的主菜单视图的类定义是

public类MainMenuViewWimpl扩展了复合实现MainMenuView{
接口主菜单UviewimPluibinder扩展UiBinder{
}
私有静态MainMenuViewImplUiBinder uiBinder=GWT.create(MainMenuViewImplUiBinder.class);
私人演讲者;
@UiField(提供的=真)
CellTree主菜单;
私有主菜单视图模型主菜单模型;
公共MainMenuViewImpl(){
mainMenuModel=新的MainMenuViewModel();
mainMenu=new CellTree(mainMenuModel,null);
Main Menu.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
TreeNode TreeNode=mainMenu.getRootTreeNode();
//这是抛出异常的地方。如果我删除下面的行,则不显示菜单
treeNode.setChildOpen(0,true);
initWidget(uiBinder.createAndBindUi(this));
}
@凌驾
公共void setPresenter(Presenter-Presenter){
this.presenter=演示者;
}
}

主菜单的UI活页夹定义为


.主菜单{
背景色:#d7dde8;
边框:1px实心#C3C3;
}
我正在使用GWT2.5.0


如果您有任何关于调试此问题的帮助/提示,我们将不胜感激。

对于任何引用此问题的人,代码中没有任何问题。 我觉得这个问题有点不对劲
initWidget(uiBinder.createAndBindUi(this));
public MainMenuViewImpl() 
{
  initWidget(uiBinder.createAndBindUi(this));
  mainMenuModel = new MainMenuViewModel();
  mainMenu = new CellTree(mainMenuModel, null);
  mainMenu.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
  TreeNode treeNode = mainMenu.getRootTreeNode();
  // This is where the exception is throw. If i remove the following line, no menu is displayed
  treeNode.setChildOpen(0, true);
}