Java 以Wicket表单显示搜索结果的数量
在我当前的ApacheWicket项目中,我有一个搜索表单,用于查询数据库并在Java 以Wicket表单显示搜索结果的数量,java,forms,search,wicket,Java,Forms,Search,Wicket,在我当前的ApacheWicket项目中,我有一个搜索表单,用于查询数据库并在列表视图中显示查询结果。搜索输入框与带有结果的ListView位于同一页面上,并且在调用表单的onSubmit()方法期间,ListView将填充来自DAO的查询结果 一切正常,但我需要显示搜索结果的数量。我试图创建一个标签,其中填充了由ListView实例的getList()方法获得的列表的size()方法的值,但没有成功 感谢您事先提供的帮助。根据您构建此表单的方式,您可能只需要执行label.setModelOb
列表视图中显示查询结果。搜索输入框与带有结果的ListView
位于同一页面上,并且在调用表单的onSubmit()方法期间,ListView
将填充来自DAO的查询结果
一切正常,但我需要显示搜索结果的数量。我试图创建一个标签,其中填充了由ListView
实例的getList()
方法获得的列表的size()方法的值,但没有成功
感谢您事先提供的帮助。根据您构建此表单的方式,您可能只需要执行label.setModelObject(listResults.size())
。看不到你是怎么做的,很难说出来
根据您在问题中所说的,您可能正在创建这样的标签newlabel(labelId,listView.getList().size())
。这不起作用,你在构建时用一个常量值设置标签的模型,这是构建时列表的大小。你需要在模型的getObject()
中获取该值,使该值成为“动态”值。例如
AbstractReadOnlyModel sizeModel = new AbstractReadOnlyModel(){
public getObject(){
return listView.getList().getSize();
}
}
new Label(labelId, sizeModel);
这样,每次页面呈现时,都会调用sizeModel().getObejct()
来检索标签的值。通过这种方式,标签得到了一个具有常量值的模型
您甚至可以在onSubmit()
方法中执行label.setModelObject(list.size())
由于我不知道您是如何构建此表单的,我将向您展示我将如何做到这一点。结果的列表将使用LoadableDetachableModel
检索。这将是ListView
的Model
。然后,标签
可以有一个AbstractReadOnlyModel
,我们可以使用它对ListView
s model对象进行排序以获取其大小
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...
}
}
为列表视图使用
具有自动分离模型
的优点,因此避免将整个列表
的结果序列化到会话中
根据您构建此表单的方式,您可能只需要执行label.setModelObject(listResults.size())
。不知道你是如何做到的,很难判断
根据您在问题中所说的,您可能正在创建这样的标签newlabel(labelId,listView.getList().size())
。这不起作用,你在构建时用一个常量值设置标签的模型,这是构建时列表的大小。你需要在模型的getObject()
中获取该值,使该值成为“动态”值。例如
AbstractReadOnlyModel sizeModel = new AbstractReadOnlyModel(){
public getObject(){
return listView.getList().getSize();
}
}
new Label(labelId, sizeModel);
这样,每次页面呈现时,都会调用sizeModel().getObejct()
来检索标签的值。通过这种方式,标签得到了一个具有常量值的模型
您甚至可以在onSubmit()
方法中执行label.setModelObject(list.size())
由于我不知道您是如何构建此表单的,我将向您展示我将如何做到这一点。结果的列表将使用LoadableDetachableModel
检索。这将是ListView
的Model
。然后,标签
可以有一个AbstractReadOnlyModel
,我们可以使用它对ListView
s model对象进行排序以获取其大小
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...
}
}
为列表视图
使用a的优点是自动分离模型
,从而避免将整个列表
结果序列化到会话中。您可以显示您正在使用的一些代码吗?您可以提供一些代码吗?例如,构建标签的模具位置?Can请展示您正在使用的一些代码?您能提供一些代码吗?例如,您构建标签的模具位置?