在我当前的Apache Wicket项目中,我有一个查询数据库并在ListView
中显示查询结果的搜索表单。搜索输入框与ListView
一起显示结果,并且在调用表单的onSubmit()方法期间,ListView
填充了来自DAO的查询结果。以Wicket形式显示搜索结果的数量
一切工作正常,但我需要显示搜索结果的数量。我试图创建一个标签,该标签充满了ListView
实例的getList()
方法得到的列表的size()方法的值,但没有运气。
感谢您提前给予任何帮助。
在我当前的Apache Wicket项目中,我有一个查询数据库并在ListView
中显示查询结果的搜索表单。搜索输入框与ListView
一起显示结果,并且在调用表单的onSubmit()方法期间,ListView
填充了来自DAO的查询结果。以Wicket形式显示搜索结果的数量
一切工作正常,但我需要显示搜索结果的数量。我试图创建一个标签,该标签充满了ListView
实例的getList()
方法得到的列表的size()方法的值,但没有运气。
感谢您提前给予任何帮助。
根据您建立此表单的方式,您可能只需要执行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
。
你甚至可以在onSubmit()
方法中做label.setModelObject(list.size())
。
从我对你如何建立这种形式的无知,我会告诉你我将如何做到这一点。结果的List
将通过LoadableDetachableModel
检索。那将是ListView
的Model
。然后,Label
可以具有例如使用ListView
的modelObject来获得其大小的AbstractReadOnlyModel
。
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...
}
}
使用了ListView
一个LoadableDetachableModel
具有自动拆卸Model
,因此避免结果的整个List
得到序列化为Session
优势。
你能展示一些你使用的代码吗? –
你能提供一些代码吗?例如。你构建标签的地方? – bert