What I want:
Here is my code to the button:
@Override
protected void onInitialize() {
add(createOkLink());
}
private IndicatingAjaxLink<Void> createOkLink() {
final IndicatingAjaxLink<Void> ret = new IndicatingAjaxLink<Void>("okLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
//when I click on it, this button (link) should not be enabled while the rest of the methods are not finished.
method1(); //about 2-5 seconds running time
method2(); //about 2-5 seconds running time
method3(); //about 2-5 seconds running time
feedback.success("success");
target.add(feedback);
//after every method has finished, the button should be clickable againg
}
};
ret.setOutputMarkupId(true);
return ret;
}
I hope someone can help me!
I am using Wicket 6.
final Form<?> form = new Form<>("form");
form.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
add(form
.add(new FeedbackPanel("feedback"))
.add(new AjaxButton("button") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
info(System.currentTimeMillis());
target.add(form);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getAjaxCallListeners().add(new AjaxCallListener()
.onBefore("$('#" + getMarkupId() + "').prop('disabled',true);")
.onComplete("$('#" + getMarkupId() + "').prop('disabled',false);"));
}
}));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With