【问题标题】:How should I handle arbitrary AJAX requests in Wicket 7?我应该如何处理 Wicket 7 中的任意 AJAX 请求?
【发布时间】:2016-10-20 18:33:28
【问题描述】:

我已经成功地为 jQuery AJAX using Resource mounting in Wicket 复制了这个 w3schools example

但是,我仍然想知道是否有更好的方法来处理任意 AJAX 请求。

【问题讨论】:

    标签: jquery ajax wicket


    【解决方案1】:

    如果您想对发送的内容进行低级控制。 AbstractAjaxBehavior 可能或多或少是您正在寻找的。你可以做类似的事情

    public class MyAjaxBehavior extends AbstractAjaxBehavior{
        @Override
        public void onRequest() {
            RequestCycle.get().scheduleRequestHandlerAfterCurrent(
                    new TextRequestHandler("application/json", "UTF-8", "{myVal:123}")
            );
        }
    };
    

    您可以将TextRequestHandler 替换为其他一些请求处理程序(或编写您自己的),以准确返回您想要的数据。

    如果您想编写自己的 javascript 处理 ajax,您可以查看 Wicket Ajax wiki page,其中描述了如何手动调用此 ajax(您可以通过 AbstractAjaxBehavior#getCallbackUrl() 获取回调 URL)。

    如果您真正想要的只是更新显示 - 用于更新检票口组件的高级 ajax 就是您想要的。大多数 Wicket Ajax 行为(如 AjaxEventBehavior)都附加了它们自己的 ajax 调用,您根本不需要做 javascript 方面的事情。您只需将组件添加到提供的AjaxRequestTarget,剩下的工作将由 wicket 完成,并自动更新组件显示的内容。

    但是,这两种方法都可以访问页面,如果这不是您想要的,则可以使用资源装载。

    【讨论】:

    • 我尝试了一些 AbstractAjaxBehavior 和 AbstractDefaultAjaxBehavior。
    • 从上一个继续。意外输入按下
    • Again 无论如何,即使 callbackURL 被明确地硬编码到页面的 HTML 中,我发现自己收到的是页面标记,而不是该行为应该发回的测试消息给客户。
    • 只有在 Wicket 的 AJAX 启动时才会发生这种情况,这是大多数行为的情况,例如 AbstractDefaultAjaxBehavior(我错误地将其放在 AbstractAjaxBehavior 旁边,而他们并没有真正做到一样)。我已经通过一个如何返回一些原始数据的示例修改了答案。
    猜你喜欢
    • 2011-04-17
    • 2017-01-29
    • 2021-03-31
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多