wicket 6.0.0-beta2在使用AjaxButton提交表单时更新DataTable的内容

前端之家收集整理的这篇文章主要介绍了wicket 6.0.0-beta2在使用AjaxButton提交表单时更新DataTable的内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想根据表单的内容来更改DataTable的内容(将其视为搜索功能).我以前在wicket 1.5.x中这样做,但是似乎不能让它在小门6.0.0-beta2中工作.它似乎没有进入AjaxButton的onSubmit方法.其他一切工作正常,每个组件呈现正确,并且在页面加载时,dataTable中填充了正确的数据,但是当我单击按钮时,没有任何反应.

任何帮助将不胜感激.这是我的代码如何@H_403_3@

dataTable:@H_403_3@

public SubscriberPage(PageParameters parameters) { 
super(parameters); 
add(new SearchForm("searchForm")); 

List<IColumn<Subscriber,String>> columns = new ArrayList<IColumn<Subscriber,String>>(); 
columns.add(new PropertyColumn<Subscriber,String>(new Model<String>("Telephone Number"),"tn","tn")); 
[...] 
columns.add(new PropertyColumn<Subscriber,String>(new Model<String>("Initialized MB"),"initializedMB")); 

table = new AjaxFallbackDefaultDataTable<Subscriber,String>("table",columns,subscriberDataProvider,40); 
table.setOutputMarkupId(true); 
add(table); 
}

这里是AjaxButton的形式:@H_403_3@

private class SearchForm extends Form<String> { 
private static final long serialVersionUID = 1L; 

private String tnModel; 
private Label tnLabel = new Label("tnLabel","Telephone Number :"); 
private TextField<String> tn; 

public SearchForm(String id) { 
  super(id); 
  tn = new TextField<String>("tnTextField",new PropertyModel<String>(this,"tnModel")); 
  tn.setOutputMarkupId(true); 
  add(tnLabel); 
  add(tn); 

  AjaxButton lSearchButton = new AjaxButton("searchButton") { 
    private static final long serialVersionUID = 1L; 

    @Override 
    protected void onSubmit(AjaxRequestTarget target,Form<?> form) { 
      SubscriberFilter filter = new SubscriberFilter(); 
      target.add(table); 
      if (!(tn.getValue() == null) && !tn.getValue().isEmpty()) { 
        filter.setTn(tn.getValue()); 
      } 
      // giving the new filter to the dataProvider 
      subscriberDataProvider.setFilterState(filter); 
    } 

    @Override 
    protected void onError(AjaxRequestTarget target,Form<?> form) { 
      // TODO Implement onError(..) 
      throw new UnsupportedOperationException("Not yet implemented."); 
    } 

  }; 
  lSearchButton.setOutputMarkupId(true); 
  this.setDefaultButton(lSearchButton); 
  add(lSearchButton); 
} 
}

解决方法

要刷新的组件需要添加到容器中.提交时,需要将容器添加到目标.这样您的组件将被刷新.就像是:
WebMarkupContainer outputContainer = new WebMarkupContainer("searchResult");
outputContainer.setOutputMarkupId(true);
outputContainer.add(table);
add(outputContainer);

@Override
protected void onSubmit(AjaxRequestTarget target,Form<?> form) {
    //change table ..... stuff ..... ...

    //refresh container
    target.add(outputContainer);
}


<div wicket:id="searchResult"></div>

猜你在找的HTML相关文章