Action層代碼封裝模板

模板action

package cn.jxlg.oa.util;

import java.lang.reflect.ParameterizedType;

import javax.annotation.Resource;

import cn.jxlg.oa.domain.User;
import cn.jxlg.oa.service.DepartmentService;
import cn.jxlg.oa.service.ForumService;
import cn.jxlg.oa.service.PrivilegeService;
import cn.jxlg.oa.service.ReplyService;
import cn.jxlg.oa.service.RoleService;
import cn.jxlg.oa.service.TopicService;
import cn.jxlg.oa.service.UserService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public abstract class BaseAction<T> extends ActionSupport implements
        ModelDriven<T> {

    // =============== ModelDriven的支持 ==================

    protected T model;

    public BaseAction() {
        try {
            // 通過反射獲取model的真實類型
            ParameterizedType pt = (ParameterizedType) this.getClass()
                    .getGenericSuperclass();
            Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
            // 通過反射創建model的實例
            model = clazz.newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public T getModel() {
        return model;
    }

    // =============== Service實例的聲明 ==================
    @Resource
    protected RoleService roleService;
    @Resource
    protected DepartmentService departmentService;
    @Resource
    protected UserService userService;
    @Resource
    protected PrivilegeService privilegeService;

    @Resource
    protected ForumService forumService;
    @Resource
    protected TopicService topicService;
    @Resource
    protected ReplyService replyService;

    /**
     * 獲取當前登錄的用戶
     *
     * @return
     */
    protected User getCurrentUser() {
        return (User) ActionContext.getContext().getSession().get("user");
    }

    // ============== 分頁用的參數 =============

    protected int pageNum = 1; // 當前頁
    protected int pageSize = 10; // 每頁顯示多少條記錄

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}


使用案例

public class ForumAction extends BaseAction {}

發佈了34 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章