0

所以我有我的

公共类 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); 在这种方法中不起作用。

任何解决方案?

4

2 回答 2

4

像这样创建链接并设置方法中应该可见的条件onConfigure()

  AjaxLink myLink = new AjaxLink("myLink") {
     @Override
     public void onClick(AjaxRequestTarget target) {
        //click stuff done here
     }

     @Override
     protected void onConfigure() {
        super.onConfigure(); 
        setVisible(hereTheVisibleCondition);
     }
  };

这样,无论何时呈现链接,它都会根据条件变为可见或不可见。

于 2013-07-24T09:33:20.133 回答
1

罗伯特的回答通常被认为更正确,但我会提供一个替代方案。

您已接近实现,但要进行更新,您必须调用target.add(myLink);以获取 ajax 刷新myLink(在 Wicket 的早期版本中它是target.addComponent())。

要使用方法更改可见性,您必须传递一个AjaxRequestTarget. 在 or 的方法onClick中,您可以调用以下方法:AjaxButtonAjaxLink

private void updateVisibility(AjaxRequestTarget target, AjaxLink myLink, Boolean isVisible) {
    myLink.setVisible(isVisible);
    target.add(myLink);
}

希望有帮助!

于 2013-07-25T18:29:10.777 回答