Как изменить видимость модели в методе с помощью метода 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);
}

Надеюсь, это поможет!

Другие вопросы по тегам