Повторное использование onClick () работает с одним и тем же объектом в памяти.Если вы не используете Ajax, вы все равно можете поддерживать некоторое состояние в анонимном подклассе Link.Затем вы можете использовать onBeforeRender () и onComponentTag (), чтобы изменить способ его отображения каждый раз.
Link<Void> link = new Link<Void>("myLink") {
private String customCSS = null;
private boolean customEnabled = true;
public void onClick() {
if (/* test to determine disabled */) {
customCSS = "disabled";
customEnabled = false;
} else {
customCSS = null;
customEnabled = true;
}
}
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
if (customCSS != null)
tag.put("class", customCSS);
}
@Override
public boolean isEnabled() {
return super.isEnabled() && customEnabled;
}
};
AttributeModifiers (или другие варианты поведения) не подходят для этого случая, потому что, если вы добавите их вметод onClick (), они начнут накладываться на одну и ту же ссылку для каждого клика - поскольку они поддерживаются как часть состояния ссылки.
Ваша ссылка может отслеживать все типы состояния, позволяя вашему onClick () метод для включения / отключения / изменения / и т. д. с повторными щелчками.
Вы также можете переопределить onBeforeRender (), isVisible () и другие методы, которые запускаются каждый раз, когда ссылка отображается на странице.Конструктор, onConfigure () и другие запускаются только один раз, независимо от того, сколько раз вы нажали кнопку.