Как передать JSON из калитки в JavaScript? - PullRequest
3 голосов
/ 07 сентября 2011

У меня есть следующая функция на странице java-скрипта, которая вызывает wicket ajax:

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

и на странице калитки я делаю следующее:

   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 со страницы калитки в JavaScript. Как я могу это сделать??

1 Ответ

1 голос
/ 29 ноября 2013

я бы посоветовал вам использовать 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'}"));
    }
}
...