Как перекодировать поведение ajax или заблокировать запрос в Wicket - PullRequest
1 голос
/ 10 июля 2019

Я не хочу получать обновления о некоторых условиях javascript от AjaxSelfUpdatingTimerBehavior.

WebMarkupContainer messagesWmc = new WebMarkupContainer( "messagesWmc" ) ;
        messagesWmc.setOutputMarkupId( true ) ;
   messagesWmc.add( 
                new   AjaxSelfUpdatingTimerBehavior(Duration.seconds( 5 )) {

                    private static final long serialVersionUID = -103345839370452326L;

                    @Override
                    protected void onPostProcessTarget(AjaxRequestTarget target) {

                        target.appendJavaScript( "restoreMessages();" );

                        super.onPostProcessTarget(target);
                    }
                });

Создает это

Wicket.Event.add(window, "load", function(event) { 
Wicket.Timer.set('messagesId.0', function(){Wicket.Ajax.ajax({"u":"./messages?8-1.0-form-messagesWmc","c":"messagesId"});}, 5000);;
;});

Что мне нужно, это

Wicket.Event.add(window, "load", function(event) { 
Wicket.Timer.set('messagesId.0', function(){**if(someCondition)** Wicket.Ajax.ajax({"u":"./messages?8-1.0-form-messagesWmc","c":"messagesId"});}, 5000);;
;});

1 Ответ

2 голосов
/ 10 июля 2019

Вы можете добавить предварительное условие к своему поведению:

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

    IAjaxCallListener listener = new AjaxCallListener() {
        @Override
        public CharSequence getPrecondition(Component component) {
            return "return someCondition;";
        }
    };
    attributes.getAjaxCallListeners().add(listener);
}

https://ci.apache.org/projects/wicket/guide/8.x/single.html#_ajax_request_attributes_and_call_listeners

...