Как изменить видимость модели в методе с помощью метода setVisible() wicket ajax
Так что у меня есть мой
открытый класс MyClass расширяет WebPage {
static AjaxFallbackLink ddd = null;
static AjaxFallbackLink dddd = null;
(...)}
и в конструкторе у меня есть:
ddd = new AjaxFallbackLink ("previous") {
@Override
public void onClick(AjaxRequestTarget target) {
//
}
};
ddd.setOutputMarkupId(true);
ddd.setOutputMarkupPlaceholderTag(true);
ddd.setVisible(false);
add(ddd);
Теперь я хочу создать метод, который изменит видимость этого элемента. Тем не менее, вызов ddd.setVisible(true); в этом методе не работает.
какие-нибудь решения?
2 ответа
Создайте свою ссылку, как эта, и установите условие, в котором должно быть видно в onConfigure()
метод:
AjaxLink myLink = new AjaxLink("myLink") {
@Override
public void onClick(AjaxRequestTarget target) {
//click stuff done here
}
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(hereTheVisibleCondition);
}
};
Таким образом, всякий раз, когда ссылка будет обработана, она будет видна или нет в зависимости от условия.
Ответ Роберта, как правило, считается более правильным, однако я предоставлю альтернативу.
Вы близки к реализации, но чтобы сделать обновление, вам нужно позвонить target.add(myLink);
чтобы получить обновление AJAX myLink
(В более ранних версиях Wicket это target.addComponent()
).
Чтобы изменить видимость с помощью метода, вам нужно будет передать AjaxRequestTarget
, В пределах onClick
методы для AjaxButton
или же AjaxLink
Вы можете вызвать следующий метод:
private void updateVisibility(AjaxRequestTarget target, AjaxLink myLink, Boolean isVisible) {
myLink.setVisible(isVisible);
target.add(myLink);
}
Надеюсь, это поможет!