私はGWTの歴史を試しています。私はこのApprochが本当にうまく実装されていることを知ります。残念なことに、私のコードは動作しません。GWT - なぜこの履歴は機能しませんか?
この私の実際のコード:私は#apartmentをロードしようとすると
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;
}
}
は、私が手:
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 - クラス履歴は静的ですか?だから私はいつでもそれを渡す必要はありません。私のアプリケーションのコンテストでそれを呼び出すことはできますか?あなたのchangePageの
何が問題なのですか?あなたはHistory.addValueChangeHandlerを呼び出し、それをあなたのProfileウィジェットに渡しましたか? –
ああ申し訳ありません...私は少し疲れています!コードをコピーして貼り付けるのは間違っています(もう一つの例でした)。今私は右のものとトピックを更新しました:) – markzzz