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