如何将 JSON 从 wicket 传递到 JavaScript?

发布于 2024-12-03 09:29:50 字数 780 浏览 0 评论 0原文

我在java脚本页面中有以下函数调用wicket ajax:

function callWicketPage() {  
                wicketAjaxGet(
                urlCallback,
                function() {alert('success'); },
                function() { alert('failed');
                }); 
            }

并且在wicket页面中我执行以下操作:

   final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() { 
    @Override
    public void renderHead(IHeaderResponse ihr) {
        super.renderHead(ihr);
        ihr.renderJavascript("var urlCallback = '" + this.getCallbackUrl() + "';", "insertedjavascript");
    } 
        protected void respond(final AjaxRequestTarget target) { 
        }
    };
    add(behave);

我想要的是将json响应从wicket页面发送回JavaScript,我该怎么做\?

I have the following function in java script page that call wicket ajax:

function callWicketPage() {  
                wicketAjaxGet(
                urlCallback,
                function() {alert('success'); },
                function() { alert('failed');
                }); 
            }

and in the wicket page I do the following:

   final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() { 
    @Override
    public void renderHead(IHeaderResponse ihr) {
        super.renderHead(ihr);
        ihr.renderJavascript("var urlCallback = '" + this.getCallbackUrl() + "';", "insertedjavascript");
    } 
        protected void respond(final AjaxRequestTarget target) { 
        }
    };
    add(behave);

What i want is to send back a json response from the wicket page to JavaScript, How could i do it \?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍风燃霜 2024-12-10 09:29:50

我建议您改用 ResourceReference ,这样您就不必获得对页面实例的读/写访问权限(并安装它以便从客户端脚本更轻松地访问)。

但如果你想保留基于行为的解决方案:

class JsonBehavior extends AbstractDefaultAjaxBehavior {

    @Override
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
        super.updateAjaxAttributes(attributes);

        // please define the channel type (default: queue)
        attributes.setChannel(new AjaxChannel("json"));
    }

    @Override
    protected void respond(AjaxRequestTarget target) {
        RequestCycle rc = RequestCycle.get();

        rc.replaceAllRequestHandlers(new TextRequestHandler("application/json", "UTF-8", "{'json':'content'}"));
    }
}

i would suggest you to use a ResourceReference instead, so you don't have to get read/write access to page instance (and mount it for easier access from your client side script).

But if you want to keep your behavior based solution:

class JsonBehavior extends AbstractDefaultAjaxBehavior {

    @Override
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
        super.updateAjaxAttributes(attributes);

        // please define the channel type (default: queue)
        attributes.setChannel(new AjaxChannel("json"));
    }

    @Override
    protected void respond(AjaxRequestTarget target) {
        RequestCycle rc = RequestCycle.get();

        rc.replaceAllRequestHandlers(new TextRequestHandler("application/json", "UTF-8", "{'json':'content'}"));
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文