2010-11-21 40 views
0

我一直在GWT尝试历史。我觉得这个接近真的很好实施。不幸的是,我的代码不起作用。GWT - 为什么这个历史不起作用?

这是我的实际代码:

public class PageLoader implements EntryPoint, ValueChangeHandler<String> { 
    private FlowPanel pageloader; 
    private GWTServiceAsync rpcService; 

    public void onModuleLoad() { 
     pageloader=new FlowPanel(); 
     rpcService=GWT.create(GWTService.class); 
     pageloader.add(new HomepageContext(rpcService)); 
     RootPanel.get().add(pageloader); 

     History.addValueChangeHandler(this); 
     if(!History.getToken().isEmpty()){ 
      changePage(History.getToken()); 
     } 
    } 

    public void onValueChange(ValueChangeEvent event) { 
     changePage(History.getToken()); 
    } 

    public void changePage(String token) { 
     if(History.getToken().equals("apartment")) { 
      pageloader.clear(); 
      pageloader.add(new ApartmentContext(rpcService)); 
     } else { 
      pageloader.clear(); 
      pageloader.add(new HomepageContext(rpcService)); 
     } 
    } 
} 

############################################################ 

public class ApartmentContext extends Index { 
    public ApartmentContext(GWTServiceAsync rpcService) { 
     super(rpcService); 
     this.getContent().add(new Apartment()); 
    } 
}  

public class Apartment extends FlowPanel { 
    // somethings 
} 

############################################################ 

public class Index extends FlowPanel { 
    private Center center; 
    public Index(GWTServiceAsync rpcService) { 
     this.center=new Center(rpcService); 
     this.add(center); 
    } 
    public FlowPanel getContent() { 
     return center.getContent(); 
    } 
} 

############################################################ 

public class Center extends FlowPanel { 
    private Menu menu; 
    private Content content; 

    public Center(GWTServiceAsync rpcService) { 
     this.content=new Content(); 
     this.menu=new Menu(rpcService, this); 

     this.add(menu); 
     this.add(content); 
    } 

    public Content getContent() { 
     return this.content; 
    } 
} 

当我尝试加载#apartment,我得到:

01:19:45,112 [ERROR] Uncaught exception escaped 
java.lang.NullPointerException: null  
at org.sinfonet.client.apartment.Apartment.<init>(Apartment.java:24)  
at org.sinfonet.client.context.ApartmentContext.<init>(ApartmentContext.java:14)  
at org.sinfonet.client.PageLoader.changePage(PageLoader.java:36)  
at org.sinfonet.client.PageLoader.onValueChange(PageLoader.java:30)  
at com.google.gwt.event.logical.shared.ValueChangeEvent.dispatch(ValueChangeEvent.java:128)  
at com.google.gwt.event.logical.shared.ValueChangeEvent.dispatch(ValueChangeEvent.java:1) 
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65)  
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$1(HandlerManager.java:53) 
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178)  
at com.google.gwt.user.client.impl.HistoryImpl.fireEvent(HistoryImpl.java:74) 
at com.google.gwt.event.logical.shared.ValueChangeEvent.fire(ValueChangeEvent.java:43) 
at com.google.gwt.user.client.impl.HistoryImpl.fireHistoryChangedImpl(HistoryImpl.java:81) 
at com.google.gwt.user.client.impl.HistoryImpl.newItem(HistoryImpl.java:118)  
at com.google.gwt.user.client.History.newItem(History.java:173)  
at com.google.gwt.user.client.History.newItem(History.java:156)  
at com.google.gwt.user.client.ui.Hyperlink.onBrowserEvent(Hyperlink.java:163) 
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1307) 
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1263) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
at java.lang.reflect.Method.invoke(Method.java:597)  
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)  
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)  
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1714) 
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)  
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)  
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) 
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)  
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)  
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) 
at sun.reflect.GeneratedMethodAccessor131.invoke(Unknown Source)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
at java.lang.reflect.Method.invoke(Method.java:597)  
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)  
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)  
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1669)  
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) 
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)  
at java.lang.Thread.run(Thread.java:619) 

1 - 如果我很明白,当我使用History.newItem()我调用onValueChange()吧?那么为什么不工作?

2 - 班级历史是静态的吗?所以我不必随时通过它;我可以在我的申请比赛中打电话吗?

+0

什么不工作?你有没有叫History.addValueChangeHandler并将它传递给你的配置文件? – 2010-11-21 20:14:51

+0

哦对不起...我有点累了!我完全错误的复制和粘贴代码(是另一个例子)。现在我已经更新了正确的主题:) – markzzz 2010-11-21 21:03:50

回答

1

您changePage()方法,尝试使用令牌变量从参数:

公共无效changePage(字符串标记)
{
如果( “公寓” .equals(令牌)){.. }
else {...}
}

没有注意到你有一个例外......这个异常发生在哪里? (代码行..)

+0

添加了整个错误代码:)感谢您的帮助! – markzzz 2010-11-21 21:48:18

+0

哦该死的..我是一个白痴:)是一个公寓错误... – markzzz 2010-11-21 21:51:29

+0

好吧,是啊... chekc线24的Apartment.java,你可能会得到答案:) – Diogo 2010-11-21 22:04:16