Dorado 7 : 5.3.2.2 准备后台服务

步骤1:我们在EmployeeService类中增加新方法getAllForPage,增加后完整代码如下:

package com.bstek.dorado.sample.standardlesson.service;
import java.util.Collection;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.data.provider.Page;
import com.bstek.dorado.sample.standardlesson.dao.SlEmployeeDao;
import com.bstek.dorado.sample.standardlesson.entity.SlEmployee;
@Component
public class EmployeeService {
    @Resource
    private SlEmployeeDao slEmployeeDao;
    
    @DataProvider
    public Collection<SlEmployee> getAll(){
        return slEmployeeDao.getAll();
    }
    
    @DataProvider
    public void getAllForPage(Page<SlEmployee> page){
        slEmployeeDao.getAll(page);
    }
}

我们可以发现getAllForPage方法和getAll方法的差别,首先是getAllForPage没有了返回值,另外传入了page参数。

对于需要支持分页处理的DataProvider方法,要求必须包含一个Page参数,Page参数是Dorado7中支持分页的一个工具类,采用分页技术处理后,每次请求一个新的分页数据都会产生一个DataProvider的AJAX请求,在这个请求动作中,客户端会自动上传每页需要加载的数据是多少条(pageSize)和现在需要加载的数据是第几页的(pageNo)。这些信息都会由 DataProvider处理机制自动将信息放在Page对象中,并激活DataProvider方法。这样我们就可以在DataProvider方法中 通过page对象的getPageSize()和getPageNo()方法获取客户端分页请求的基本分页信息。并交给后台做数据查询的DAO做进一步的 处理。处理后的数据存放在Page对象中,并传递到前台进行展示。

info

我们可以在getAllForPage方法内部添加断点,并在每一次翻页的时候注意查看page中的pageSize和pageNo信息。