加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

发布时间:2020-12-14 19:33:24 所属栏目:资源 来源:网络整理
导读:我想根据表单的内容来更改DataTable的内容(将其视为搜索栏功能).我以前在wicket 1.5.x中这样做,但是似乎不能让它在小门6.0.0-beta2中工作.它似乎没有进入AjaxButton的onSubmit方法.其他一切工作正常,每个组件呈现正确,并且在页面加载时,dataTable中填充了正
我想根据表单的内容来更改DataTable的内容(将其视为搜索栏功能).我以前在wicket 1.5.x中这样做,但是似乎不能让它在小门6.0.0-beta2中工作.它似乎没有进入AjaxButton的onSubmit方法.其他一切工作正常,每个组件呈现正确,并且在页面加载时,dataTable中填充了正确的数据,但是当我单击按钮时,没有任何反应.

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

dataTable:

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的形式:

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读