2015-08-03 13 views
5

Ho una lista con un collegamento Ajax in ogni riga. questo link gestisce il proprio processo di rimozione delle righe. tutta la lista avvolta con WebMarkupContainer. Premendo il collegamento, chiamato next logic 1) elemento rimosso dal DB. 2) elenco aggiornato modello 3) target.add (WMC) - aggiungere WebMarkupContainer di ajax per l'aggiornamentoComponente WicketNotFoundException: il componente è stato rimosso dalla pagina

dal lista ha più di un elemento di ciascun rimuovere l'azione si è schiantato su di rendering palco. Così, dopo la pagina di aggiornamento che vedo è stato fatto che l'azione, ma il problema è accaduto dopo che

IKickListener onKickListener = new IKickListener() { 
     @Override 
     public void onKickListener(ListItem<Consultant> item, AjaxRequestTarget target) { 

      Cons modelObject = item.getModelObject(); 
      mUserDAO.remove(modelObject.accountId, getId()); 

      updateListModel(); 
      target.add(mWmc); 
      target.appendJavaScript("console.log("kicked")"); 
     } 
    }; 

     mWmc = new WebMarkupContainer("wmc"); 
     mWmc.setOutputMarkupId(true); 
     add(mWmc); 
     ListView listView = new ConsListView("consList", new PropertyModel<List<? extends Cons>>(this, "consultants"), onKickListener); 
     mWmc.add(listView); 

e popolano il metodo della mia lista

@Override 
protected void populateItem(final ListItem<ConsPanel.Cons> item) { 
    item.add(new IndicatingAjaxLink("actionKick") { 

     private static final long serialVersionUID = 1L; 

     @Override 
     public void onClick(AjaxRequestTarget target) { 
      mKickListener.onKickListener(item, target); 
     } 
    }); 
} 

poi ho mi hanno assegnato la prossima traccia dello stack

org.apache.wicket.core.request.handler.ComponentNotFoundException: Component 'consPanelPlace:cons:wmc:consList:2:actionKick' has been removed from page. 
    at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:177) 
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:865) 
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) 
    at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) 
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) 
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

I utilizzare wicket 7.0.0-M5

AGGIORNAMENTO Ho trovato che quando ho più di 1 elemento nell'elenco, il callback ajax è associato solo al primo. Ma con l'azione clic rimosso tutti gli elementi tranne uno. Anche il collegamento ajax chiamato elementi conta volte.

+0

Con quale frequenza è necessario fare clic per visualizzare questo errore? – svenmeier

+0

ogni volta che ho più di un articolo –

risposta

4

Ho trovato il problema. Ho avuto lo stesso id non wicket: id, ma id generale, ad ogni elemento. così l'ascoltatore si era unito al primo, perché il wicket ajax lo ascoltava. poi aveva chiamato poche volte. Il problema era nel markup.

<span class="btn" wicket:id="actionKick" id="kick">Kick</span> 
             ^^^^^^^^^---problem was here 
Problemi correlati