저는 아주 기본적인 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를 사용했기 때문에 그렇게 생각합니다. RefreshingView를 대신 사용해보십시오. – bert
Bert에 감사드립니다.RefreshingView를 시도해 본 적이 없지만 (이 경우에는 내 자신의 반복자를 재정의하고 구현해야만하는 것처럼 보입니다) 다른 해결책을 찾았습니다. 아래를 참조하십시오. – Marcus