模板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 {}