碰到了个问题,我往前台传值时,直接从数据库取出来将那个类封装成另一个类,但是我需要用pagehelper,如果在controller里用pagehelper,这样肯定取不到页数,因为这个数据集合并不是我直接从数据库中取出的。
问题解决:封装成一个Map
public Map<String,Object> getAllData(Integer pageNumber,Integer pageSize,int type) {
Map<Integer,String> firstCategoryMap=firstCategoryService.getAllMap();
Map<Integer,String> secondCategoryMap=secondCategoryService.getAllMap();
PageHelper.startPage(pageNumber,pageSize);
List<AppleModel> appleModelList=null;
if(type==0) {
appleModelList = appleModelDao.getAll();
}
else {
appleModelList = appleModelDao.getAllByCategory(type);
}
PageInfo<AppleModel> info = new PageInfo<>(appleModelList);
List<ModelJson> modelJsons=new LinkedList<>();
for(int i=0;i<appleModelList.size();i++){
AppleModel appleModel=appleModelList.get(i);
ModelJson modelJson=new ModelJson(appleModel.getId(),appleModel.getModelname(),
firstCategoryMap.get(appleModel.getFirstid()),secondCategoryMap.get(appleModel.getCategory()));
modelJsons.add(modelJson);
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("rows", modelJsons);
map.put("total", info.getTotal());
map.put("isHasPreviousPage",info.isHasPreviousPage());
map.put("isHasNextPage",info.isHasNextPage());
map.put("pageNumber",pageNumber);
map.put("Pages",info.getPages());
map.put("type",type);
return map;
}
将结果封装成一个 map<String,Object>。这样就可以直接都传进去了,并且在Controller里也减少了代码重复。
但是又出现了个问题,我发现我前台取不到值。
model向前台传值:
model.addAttribute(modelMapService.getAllData(1,6,0));
后来我打印了一下结果,发现model.addAttribute()如果你不加名字,他会在传值的时候加上你传类型的名字。
如:
所以你只要加上对应的名字,或者直接用hashMap.total 取值