当前位置: 首页 > 知识库问答 >
问题:

Wicket ComponentNotFoundException:组件已从页面中删除

汪耀
2023-03-14

我在每行中都有ajax链接列表。此链接管理自己的行移除处理。用WebMarkupContainer包装的整个列表。通过按下名为next logic 1)item remover from db.2)updated list model 3)target.add(wmc)的链接-将WebMarkupContainer添加到ajax以进行更新

由于list有一个以上的元素,每个remove操作在呈现阶段崩溃。所以在刷新页面后,我看到操作已经完成,但在那之后发生了问题

  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);
@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);
        }
    });
}
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)

更新我发现,当我有超过1项在列表中,ajax回调只附加第一个。但是在单击操作中删除了除一项之外的所有项。还有一个ajax链接,称为项目计数时间。

共有1个答案

陶飞鸿
2023-03-14

我解决了这个问题。我在每个项目上都有相同的id不是检票口:id而是一般id。所以listener连接到了第一个,因为wicket ajax会监听它。然后它就打了几次电话。问题出在标记上。

<span class="btn" wicket:id="actionKick" id="kick">Kick</span>
                                         ^^^^^^^^^---problem was here
 类似资料:
  • 下面是我的代码: navbarpanel.java navbarpanel.html

  • 问题内容: 我目前正在使用iText,我想知道是否可以从PDF文件删除页面? 我已经用阅读器等打开了它,我想先删除一个页面,然后再将其保存回新文件。我怎样才能做到这一点? 问题答案: “删除”页面的“更好”方式正在 这意味着我们只会选择1-5、10-12页,有效地“删除” 6-9页。

  • 问题内容: 我正在使用Selenium WebDriver(ChromeDriver)。我需要在处理后(从DOM模型中)从页面中删除一些元素。 例如,我有以下元素: 如何从浏览器DOM模型中删除? 如何使用Selenium WebDriver在Java中实现它?请举一个例子。 问题答案: 您必须执行JavaScript代码才能进行DOM更改。

  • 我试着从这一页中刮出博彩赔率: https://www.interwetten.com/en/sportsbook/top-leagues?toplinkid=1 现在我得到的输出是: 现在我想提取每个中的团队名,但我不知道如何提取。我尝试使用节点或attrs,但没有效果。

  • 所以我计划浏览一下这个网站,这样我就可以得到每个英超球队的阵容数据。有人能帮我怎么做吗?在这个URL下,在英超标题下,我可以看到一系列UI标签中的球队列表。 我还注意到每个队的网址是这样的-https://www.skysports.com/arsenal,在那个页面里,队的链接看起来像-https://www.skysports.com/arsenal-squad. 但非英超球队也是如此。 最初

  • 我有一个生成PDF文件的系统,每个文件由两页组成。出于某种原因,我需要编写一个PHP代码,可以从每个PDF文件中删除第二页。以下是我所做的以及结果: 1-我使用TCPDF库编写了以下代码: 结果:空白一页PDF文件。换句话说原始文件中的内容在新文件中不可用 2-我使用FPDF和FPDI库从原始文件中只读取一页。 结果是出现以下错误消息: 带有消息的未捕获异常异常此文档(test.pdf)可能使用了