В зависимости от того, как вы создали эту форму, вам может потребоваться только label.setModelObject(listResults.size())
.Трудно сказать, не видя, как ты это делаешь.
Судя по тому, что вы говорите в своем вопросе, возможно, вы создаете свой ярлык, как этот new Label(labelId, listView.getList().size()
.Это не будет работать, вы устанавливаете Модель метки во время создания с постоянным значением, это размер списка во время создания.Вам нужно получить это значение внутри Model
getObject()
, чтобы сделать значение «динамическим».Как, например,
AbstractReadOnlyModel sizeModel = new AbstractReadOnlyModel(){
public getObject(){
return listView.getList().getSize();
}
}
new Label(labelId, sizeModel);
При этом каждый раз при визуализации страницы будет вызываться sizeModel().getObejct()
для получения значения для Label
.Таким образом, Label
получил Model
с постоянным значением.
Вы можете даже сделать label.setModelObject(list.size())
в методе onSubmit()
.
Из-за моего невежествакак вы построили эту форму, я покажу вам, как мне это сделать.List
результатов будет получено с LoadableDetachableModel
.Это было бы Model
из ListView
.Тогда Label
может иметь, например, AbstractReadOnlyModel
, который использует ListView
s modelObject, чтобы получить его размер.
public class MyForm extends Form {
private LoadableDetachableModel resultsModel;
private IModel searchModel;
public MyForm(){
searchModel = new Model();
TextField searchTextField = new TextField("search", searchModel);
resultsModel = new LoadableDetachableModel(){
protected Object load(){
return myService.get(searchModel.getModelObject());
}
}
ListView lv = new ListView("list", resultsModel){
// ...
}
Label resultsCount = new Label("count", new AbstractReadOnlyModel(){
public Object getObject(){
return ((List) resultsModel.getObject()).size();
}
})
SubmitButton button = new SubmitButton(){
public void onSubmit(){
//... No actions needed, really
}
}
// add's...
}
}
Использование LoadableDetachableModel
для ListView
имеет то преимущество, что автоматически отсоединяет Model
и, следовательно, позволяет избежать всего List
результатов для сериализации вSession
.