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

Wicket-在回调结果后更新表单

许俊贤
2023-03-14

当我试图用回调操作提供的结果更新表单时,我遇到了一个问题。这个问题是由Wicket单例线程引起的,我不明白如何实现一个解决方案。我需要更新的代码如下。

provaButton = new AjaxLink("prova_btn"){
                @Override
                public void onClick(AjaxRequestTarget art) {
                    getChannelManagerAPI().getToken(new ChannelManagerCallbackWrapper() {
                        @Override
                        protected void onSuccess(Object object) {
                            Object[] response = null;
                            response = (Object[]) object;
                            for (Object obj : response) {
                                info("Result " + obj.toString());
                            }
                        }

                        @Override
                        protected void onFailure(Throwable throwable) {
                            info("Errore nella chiamata : "+ throwable.getMessage());
                        }
                    });
                    refreshFeedBackPanel(art);
                }

            };
            add(provaButton);

共有1个答案

田翰林
2023-03-14

看来您正在进行异步调用。Wicket不支持挂起HTTP线程,因此您有以下选项:

>

  • 阻止HTTP线程并等待异步服务的响应。例如。您可以在回调方法中使用java.util.concurrent.CountDownLatchAwait()Countdown()。只有在确定异步调用速度快的情况下才使用此方法!

    使用org.apache.wicket.ajax.abstractajaxTimerBehavior或其专门化org.apache.wicket.ajax.ajaxSelfUpdatingTimerBehavior执行长轮询。其思想是启动异步调用,然后在每个nMS/secs上,Wicket将进行一个新的Ajax调用,以检查是否有响应并呈现它。

    使用Wicket Native WebSocket在异步调用的结果可用时立即将其推送。

  •  类似资料:
    • 我创建了一个应用程序,其中一个地点列表保存在数据库中。我只根据Google留档保存了保存地点的地点ID。 然后我创建了一个界面,让用户输入他们的当前位置(mCurrentLocation)。 然后,我创建了一个异步任务,检查数据库中保存的每个地点ID,并检查哪些地点距离用户位置500米以内。这是在doInBackground中完成的。根据Google文档,我使用了getPlaceById和setR

    • 问题内容: 在同一张表上更新后,如何在触发器中更新表的列? 这是触发条件: 现在当我像这样更新表时 这不起作用,因为我得到以下信息: 那么我到底该如何工作呢? 问题答案: 如果将触发器更改为而不是,可以这样操作:

    • 问题内容: 这一点效果很好: 它将列中的所有字段组加在一起。 我遇到的麻烦是得到此结果来更新另一个表中的另一列。 这就是我所拥有的: 任何建议,不胜感激。 问题答案: 您不能在内部使用update语句。您需要使用子选择进行分组。 像这样的东西:

    • 我在试用GraphQL。我从postgresql中提取数据,除了一个问题,解析在查询完成之前就完成了,其他一切似乎都能正常工作。我以为我的查询承诺工作正常。这里是我为查询数据库而创建的类: 下面是我的graphql查询: 我注释了我的结果,只是想了解一下返回静态内容的情况,结果似乎在then()内时不会返回到graphisql(这意味着在then()之前完成的解析)。输出: } 我可以通过将静态返

    • 更改为请求似乎可以解决这个问题。

    • 问题内容: 我使用asp.net和网络表单。在我的项目中,我有asmx Web服务 结果就是这种格式。 如何在$ .ajax成功中附加此结果标签以获取此输出: 1-测试1,2-测试2。 问题答案: 而是返回列表,并使用[ScriptMethod(ResponseFormat = ResponseFormat.Json)]属性- 它将自动创建JSON对象作为返回: 在JS方面: