Question

J'utilise GWT-RPC pour renseigner les arborescences Ext-GWT avec les données d'un serveur. J'utilise 4 callbacks pour peupler 6 TreeGrids. Lorsque la fonction onSuccess de rappel modifie TreeGrid en insérant des lignes, TreeGridView doit rendre les lignes. La classe de rappel s'appelle MainPnlSummaryTablesAsyncCallback.

Pour une raison quelconque, lorsqu'il est nécessaire de déterminer le décalage de hauteur du défilement de TreeGridView via JSNI, onSuccess ou onFailure est appelé sur une autre instance du rappel dans la trace de la pile. Vous trouverez ci-dessous une copie de la trace de la pile rencontrée.

N'est-ce pas vraiment étrange? Pourquoi cela se produit-il?

Pour ma part, j'utilise Ext-GWT 2.0.1 et GWT 1.7.0 et j'utilise un navigateur en mode hébergé pour déboguer ceci, bien que je sois à peu près sûr que c'est un problème pour le mode Web.

PnlSummaryClientDebug_as10node6 [Java Application]  
com.google.gwt.dev.HostedMode at localhost:3595 
    Thread [main] (Suspended (breakpoint at line 403 in MainPage$MainPnlSummaryTablesAsyncCallback))    
        MainPage$8(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(GWTPair<AggregateStringGWTTable,AggregateStringGWTTable>) line: 403    
        MainPage$8(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(Object) line: 1    
        RequestCallbackAdapter<T>.onResponseReceived(Request, Response) line: 215   
        Request.fireOnResponseReceivedImpl(RequestCallback) line: 264   
        Request.fireOnResponseReceivedAndCatch(GWT$UncaughtExceptionHandler, RequestCallback) line: 236 
        Request.fireOnResponseReceived(RequestCallback) line: 227   
        NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] [local variables unavailable]    
        NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39  
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25  
        Method.invoke(Object, Object...) line: 597  
        MethodAdaptor.invoke(Object, Object...) line: 103   
        IDispatchImpl.callMethod(CompilingClassLoader, Object, Variant[], MethodAdaptor) line: 126  
        IDispatchProxy.invoke(int, int, Variant[]) line: 155    
        IDispatchProxy(IDispatchImpl).Invoke(int, int, int, int, int, int, int, int) line: 294  
        IDispatchProxy(IDispatchImpl).method6(int[]) line: 194  
        COMObject.callback6(int[]) line: 117    
        COM.VtblCall(int, int, int, GUID, int, int, DISPPARAMS, int, EXCEPINFO, int[]) line: not available [native method]  
        IDispatch.Invoke(int, GUID, int, int, DISPPARAMS, int, EXCEPINFO, int[]) line: 64   
        OleAutomation.invoke(int, int, Variant[], int[], Variant) line: 493 
        OleAutomation.invoke(int, Variant[]) line: 417  
        ModuleSpaceIE6.doInvokeOnWindow(OleAutomation, String, Variant[]) line: 68  
        ModuleSpaceIE6.doInvoke(String, Object, Class<?>[], Object[]) line: 153 
        ModuleSpaceIE6(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 453    
        ModuleSpaceIE6(ModuleSpace).invokeNativeInt(String, Object, Class<?>[], Object[]) line: 207 
        JavaScriptHost.invokeNativeInt(String, Object, Class<?>[], Object[]) line: 75   
        Element$.getOffsetHeight$(Element) line: not available  
        El.getHeight(boolean) line: 984 
        TreeGridView(BufferView).getVisibleRowCount() line: 313 
        TreeGridView(BufferView).doRender(List<ColumnData>, List<ModelData>, int, int, boolean, boolean) line: 189  
        TreeGridView(BufferView).doRender(List<ColumnData>, List<ModelData>, int, int, boolean) line: 181   
        TreeGridView(GridView).renderRows(int, int) line: 1559  
        TreeGridView(GridView).insertRows(ListStore<ModelData>, int, int, boolean) line: 1242   
        TreeGridView(GridView).onAdd(ListStore<ModelData>, List<ModelData>, int) line: 1293 
        GridView$5.storeAdd(StoreEvent<ModelData>) line: 1179   
        GridView$5(StoreListener<M>).handleEvent(StoreEvent<M>) line: 22    
        GridView$5(StoreListener<M>).handleEvent(BaseEvent) line: 1 
        TreeGrid$2(BaseObservable).callListener(Listener<BaseEvent>, BaseEvent) line: 176   
        TreeGrid$2(BaseObservable).fireEvent(EventType, BaseEvent) line: 96 
        TreeGrid$2(ListStore<M>).insert(List<? extends M>, int, boolean) line: 467  
        TreeGrid$2(ListStore<M>).insert(List<? extends M>, int) line: 266   
        TreeGrid<M>.onAdd(TreeStoreEvent<M>) line: 430  
        TreeGrid$1.storeAdd(StoreEvent<M>) line: 123    
        TreeGrid$1(StoreListener<M>).handleEvent(StoreEvent<M>) line: 22    
        TreeGrid$1(StoreListener<M>).handleEvent(BaseEvent) line: 1 
        TreeStore<M>(BaseObservable).callListener(Listener<BaseEvent>, BaseEvent) line: 176 
        TreeStore<M>(BaseObservable).fireEvent(EventType, BaseEvent) line: 96   
        TreeStore<M>.doInsert(TreeModel, List<TreeModel>, int, boolean, boolean) line: 799  
        TreeStore<M>.insert(List<M>, int, boolean) line: 493    
        TreeStore<M>.add(List<M>, boolean) line: 163    
        TreeStore<M>.add(M, boolean) line: 174  
        PnlClientFactory.populatePnlDataTreeStore(AggregateStringGWTTable, TreeStore<BaseModel>) line: 42   
        MainPage$9(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(GWTPair<AggregateStringGWTTable,AggregateStringGWTTable>) line: 403    
        MainPage$9(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(Object) line: 1    
        RequestCallbackAdapter<T>.onResponseReceived(Request, Response) line: 215   
        Request.fireOnResponseReceivedImpl(RequestCallback) line: 264   
        Request.fireOnResponseReceivedAndCatch(GWT$UncaughtExceptionHandler, RequestCallback) line: 236 
        Request.fireOnResponseReceived(RequestCallback) line: 227   
        NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
        NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39  
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25  
        Method.invoke(Object, Object...) line: 597  
        MethodAdaptor.invoke(Object, Object...) line: 103   
        IDispatchImpl.callMethod(CompilingClassLoader, Object, Variant[], MethodAdaptor) line: 126  
        IDispatchProxy.invoke(int, int, Variant[]) line: 155    
        IDispatchProxy(IDispatchImpl).Invoke(int, int, int, int, int, int, int, int) line: 294  
        IDispatchProxy(IDispatchImpl).method6(int[]) line: 194  
        COMObject.callback6(int[]) line: 117    
        OS.DispatchMessageW(MSG) line: not available [native method]    
        OS.DispatchMessage(MSG) line: 1925  
        Display.readAndDispatch() line: 2966    
        HostedMode(SwtHostedModeBase).processEvents() line: 235 
        HostedMode(HostedModeBase).pumpEventLoop() line: 558    
        HostedMode(HostedModeBase).run() line: 405  
        HostedMode.main(String[]) line: 232 
C:\Program Files\Java\jdk1.6.0_06\bin\javaw.exe (Jul 29, 2009 2:11:16 PM)   
Était-ce utile?

La solution

Ok, il semble que le serveur lançait des exceptions NullPointerExceptions lors des appels RPC. Je ne comprends toujours pas pourquoi la trace de la pile côté client ressemblait à ceci (cela semble un peu trompeur, comme si deux empiler les traces saignées les unes dans les autres).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top