Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Wicket中记录ajax行为或阻止请求_Javascript_Ajax_Wicket - Fatal编程技术网

Javascript 如何在Wicket中记录ajax行为或阻止请求

Javascript 如何在Wicket中记录ajax行为或阻止请求,javascript,ajax,wicket,Javascript,Ajax,Wicket,我不想从AjaxSelfUpdatengTimerBehavior获得某些javascript条件的更新 WebMarkupContainer messagesWmc = new WebMarkupContainer( "messagesWmc" ) ; messagesWmc.setOutputMarkupId( true ) ; messagesWmc.add( new AjaxSelfUpdatingTimerBehavior(D

我不想从AjaxSelfUpdatengTimerBehavior获得某些javascript条件的更新

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);;
;});

您可以为您的行为添加先决条件:

@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);
}

当someCondition为false时停止请求,但当它再次变为true时,该行为不会继续调用。在这种情况下,您必须在Java代码中重新启动timerBehavior:behavior.stop();restart()的行为