【发布时间】:2012-07-21 21:51:27
【问题描述】:
我想根据表单的内容更改 DataTable 的内容(将其视为搜索栏功能)。我曾经在 wicket 1.5.x 中这样做,但我似乎无法让它在 wicket 6.0.0-beta2 中工作。 AjaxButton 的 onSubmit 方法中似乎没有进入。其他一切正常,每个组件都正确呈现,并且在页面加载时 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);
}
}
【问题讨论】:
-
你是否测试过你是否到达了onSubmit()?通过调试消息或调试器?
-
是的,正如我在问题中所说,它没有到达 onSubmit(),我不知道为什么......
-
会不会是这张票是相关的:issues.apache.org/jira/browse/WICKET-4630? (附带说明:您知道有 6.0.0beta-3 可用吗?)
-
我认为它与这张票无关,因为它似乎是未执行 ajax 调用的问题。可能有一些参数我没有为 ajax 调用正确设置(可能在本页提到的 updateAjaxAttributes() 中:cwiki.apache.org/confluence/display/WICKET/Wicket+Ajax)。现在我停止使用 wicket 6.x 并回到 1.5.x 并且一切正常。 beta3 值得一试(感谢提供信息)
-
表单如何获取表格?您没有通过它,并且表格在上面的代码示例中不是最终的
标签: ajax wicket-1.6 wicket-6