我在一個非常基本的Wicket問題上掙扎。我試圖查詢後端數據庫,但無法顯示結果。以下是我正在使用的代碼。提交後currentQuery
和currentResult
已正確更新,但我的SearchResults
類不會使用currentResults
中的新數據重新渲染。我想結果類只是沒有注意到模型實際上已被更新。我一直在嘗試modelChanged,但無法讓它工作。我對Wicket有點新,所以我可能會做一些根本性的錯誤。任何幫助深表感謝!在Wicket中,爲什麼我的結果在表單提交後沒有刷新?
public class SearchPage extends WebPage {
Query currentQuery = new Query();
Result currentResult = new Result();
public SearchPage() {
add(new SearchForm("searchForm", new CompoundPropertyModel<Query>(currentQuery)));
add(new SearchResults("searchResults", new PropertyModel<List<Hit>>(currentResult, "hits")));
}
public void doSearch(Query Query) {
currentResult = getResults(query);
}
public class SearchForm extends Form<Query> {
public SearchForm(String id, CompoundPropertyModel<Query> model) {
super(id, model);
add(new TextField<String>("query"));
}
protected void onSubmit() {
super.onSubmit();
doSearch(currentQuery);
}
}
public class SearchResults extends WebMarkupContainer {
public SearchResults(String id, PropertyModel<List<Hit>> model) {
super(id, model);
add(new ListView<Hit>("hit", model) {
protected void populateItem(ListItem<Hit> item) {
item.add(new Label("column", item.getModelObject().getColumnValue("column")));
}
});
}
}
}
我認爲這是因爲你使用了ListView。改爲嘗試刷新視圖。 – bert 2011-04-22 19:14:51
感謝您評論Bert!我從來沒有嘗試刷新視圖(看起來像我將不得不重寫和實現我自己的迭代器在這種情況下),但找到了另一種解決方案。見下文。 – Marcus 2011-04-23 09:51:37