0

i use Wicket.Ajax.ajax in pair with AbstractDefaultAjaxBehavior to sent some javascript calculated data to the java. But after event has fired from javascript and comes to Java, browser has been redirected to callback url.

...web/product/1?7&6-1.IBehaviorListener.0-idsPanelPlace%3Floggged_id=332797

logggedidAjax = new AbstractDefaultAjaxBehavior() {

        @Override
        protected void respond(AjaxRequestTarget target) {
            StringValue loggged_vkid = getRequest().getQueryParameters().getParameterValue("loggged_id");
            String loggedId = (loggged_id != null) ? loggged_id.toString() : "null";
            logger.info("ajax has comming with logged ID " + loggedId);
        }

        @Override
        public void renderHead(final Component component, IHeaderResponse response) {
            super.renderHead(component, response);
            String componentMarkupId = getMarkupId();

            Map<String, Object> map = new HashMap<>();
            map.put("callbackUrl", logggedidAjax.getCallbackUrl());

            PackageTextTemplate ptt = new PackageTextTemplate(VKIDsPanel.class, "id_callback.js");
            OnDomReadyHeaderItem onDomReadyHeaderItem = OnDomReadyHeaderItem.forScript(ptt.asString(map));
            response.render(onDomReadyHeaderItem);
        }
    };
    add(logggedidAjax);

As for js code -

var wcall = Wicket.Ajax.ajax({ u: '${callbackUrl}' + '?loggged_id='+ response.session.mid });

Why browser redirected to the url, since it is Ajax? How to prevent redirection?

Yevgen Kulik
  • 5,713
  • 2
  • 22
  • 44

1 Answers1

0

I'm not sure what's going wrong in your code, but the following should be easier:

logggedidAjax = new AjaxEventBehavior("domready") {

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

    String loggedId = "return {'logged_id': response.session.mid}";

    attributes.getDynamicExtraParameters().add(loggedId);
  }

  @Override
  protected void onEvent(AjaxRequestTarget target) {
    StringValue loggged_vkid = getRequest().getQueryParameters().getParameterValue("loggged_id");
    String loggedId = (loggged_id != null) ? loggged_id.toString() : "null";
    logger.info("ajax has comming with logged ID " + loggedId);
  }
};
add(logggedidAjax);
svenmeier
  • 5,681
  • 17
  • 22