PaginationController.java 3.04 KB
package org.rcisoft.common.controller;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.core.aop.PageUtil;
import org.rcisoft.common.model.CommonPageGridModel;
import org.rcisoft.common.model.GridModel;
import org.rcisoft.core.model.DlswPageGridModel;
import org.rcisoft.core.util.DlswPageGridUtil;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.servlet.http.HttpServletRequest;

/**
 * Created with family.
 * author: cy
 * Date: 16/6/16
 * Time: 上午10:52
 * description: 分页初始化
 */

@Slf4j
public class PaginationController<T> extends ResponseController {

    protected static final String PAGINATIONKEY = "pagination";

    protected static final int INIT_PAGE = 1;

    protected static final int INIT_ROWS = 10;

    public PaginationController() {
    }

    public PageUtil<T> getPaginationUtility() {
        PageUtil paginationUtility = (PageUtil)request.getAttribute(PAGINATIONKEY);
        if(paginationUtility == null) {
            throw new NullPointerException("未传递分页参数(page&rows),却在方法中使用paginationUtility对象。");
        } else {
            return paginationUtility;
        }
    }

    @ModelAttribute
    private void setPagnationAttribute(HttpServletRequest request,String gridPager, Integer rows, Integer page, String sort) {
        PageUtil _paginationUtility = new PageUtil();
        /*dlsw gridModel*/
        if(StringUtils.isNotBlank(gridPager)) {
            try {
                DlswPageGridModel gridModel = DlswPageGridUtil.transform(gridPager);
                _paginationUtility.setGridModel(gridModel);
                _paginationUtility.setPageNum(gridModel.getNowPage());
                _paginationUtility.setPageSize(gridModel.getPageSize());
                request.setAttribute(PAGINATIONKEY, _paginationUtility);
                return;
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        }
        if(rows != null && page != null && sort != null ) {
            _paginationUtility.setPageNum(page.intValue());
            _paginationUtility.setPageSize(rows.intValue());
//            _paginationUtility.setOrderBy(sort);
            request.setAttribute(PAGINATIONKEY, _paginationUtility);
        }

        else if(rows != null && page != null) {
            _paginationUtility.setPageNum(page.intValue());
            _paginationUtility.setPageSize(rows.intValue());

        } else if(sort != null) {
//            _paginationUtility.setOrderBy(sort);
        }
        else{
            _paginationUtility.setPageNum(INIT_PAGE);
            _paginationUtility.setPageSize(INIT_ROWS);

        }
        request.setAttribute(PAGINATIONKEY, _paginationUtility);

    }

    /**
     * get gridMoel
     * @return
     */
    public GridModel getGridModelResponse(){
        PageUtil pagination = getPaginationUtility();
        if(null != getPaginationUtility())
            return pagination.getGridModel();
        else{
            return new CommonPageGridModel();
        }
    }
}