package com.hehenian.manager.actions.common;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.servlet.ModelAndView;
import com.hehenian.biz.common.base.dataobject.PageDo;
import com.hehenian.manager.actions.common.exception.SessionException;
public class BaseController<T> implements Serializable {
protected transient final Logger logger = Logger.getLogger(this.getClass());
private static final long serialVersionUID = 1L;
public final String AJAX_PAGE = "ajaxDone";
public final String SUCCESS = "success";
public final String CLOSECURRENT = "closeCurrent";
public final String ADD_SUCCESS = "添加成功 !";
public final String UPDATE_SUCCESS = "修改成功 !";
public final String DELETE_SUCCESS = "删除成功 !";
public final String ADD_FAILURE = "添加失败 !";
public final String UPDATE_FAILURE = "修改失败 !";
public final String DELETE_FAILURE = "删除失败 !";
public final String UN_EXIST = "不存在该记录 !";
public final String EXIST = "已存在该记录 !";
@Autowired
protected HttpServletRequest request;
@InitBinder
public void initBinderCalendar(WebDataBinder binder) {
//binder.registerCustomEditor(Calendar.class, new CalendarEditor());
}
/*
* @param msg : 需要在页面显示的消息
* 默认【关闭】标签页面
* 默认navTabId即页面的需要刷新的页面rel的值为action名称
* */
protected ModelAndView ajaxSuccess(String msg) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", CLOSECURRENT);
mav.addObject("statusCode", 200);
mav.addObject("message", msg);
mav.addObject("navTabId", this.getClass().getSimpleName().toLowerCase());
return mav;
}
protected ModelAndView ajaxSuccessAndRefresh(String msg) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", "");
mav.addObject("statusCode", 200);
mav.addObject("message", msg);
mav.addObject("navTabId", this.getClass().getSimpleName().toLowerCase());
return mav;
}
/*
* @param msg : 需要在页面显示的消息
* @param isClose:是否关闭标签页面,true关闭,false 不关闭
* 默认navTabId即页面的需要刷新的页面rel的值为action名称
* */
public ModelAndView ajaxSuccess(String msg, boolean isClose) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", isClose ? CLOSECURRENT : "");
mav.addObject("statusCode", 200);
mav.addObject("message", msg);
mav.addObject("navTabId", this.getClass().getSimpleName().toLowerCase());
return mav;
}
/*
* @param msg : 需要在页面显示的消息
* @param isClose:是否关闭标签页面,true关闭,false 不关闭
* @param navTabId:标签页ID
* */
public ModelAndView ajaxSuccess(String msg, boolean isClose, String navTabId) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", isClose ? CLOSECURRENT : "");
mav.addObject("statusCode", 200);
mav.addObject("message", msg);
mav.addObject("navTabId", navTabId);
return mav;
}
/*
* @param msg : 需要在页面显示的消息
* 默认【不关闭】标签页面
* 默认navTabId即页面的需要刷新的页面rel的值为action名称
* */
protected ModelAndView ajaxFailure(String msg) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", "");
mav.addObject("statusCode", 300);
mav.addObject("message", msg);
mav.addObject("navTabId", this.getClass().getSimpleName().toLowerCase());
return mav;
}
/*
* @param msg : 需要在页面显示的消息
* @param isClose:是否关闭标签页面,true关闭,false 不关闭
* 默认navTabId即页面的需要刷新的页面rel的值为action名称
* */
public ModelAndView ajaxFailure(String msg, boolean isClose) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", CLOSECURRENT);
mav.addObject("statusCode", 300);
mav.addObject("message", msg);
mav.addObject("navTabId", this.getClass().getSimpleName().toLowerCase());
return mav;
}
/*
* @param msg : 需要在页面显示的消息
* @param isClose:是否关闭标签页面,true关闭,false 不关闭
* @param navTabId:标签页ID
* */
public ModelAndView ajaxFailure(String msg, boolean isClose, String navTabId) {
ModelAndView mav = new ModelAndView(AJAX_PAGE);
mav.addObject("callbackType", isClose ? CLOSECURRENT : "");
mav.addObject("statusCode", 200);
mav.addObject("message", msg);
mav.addObject("navTabId", navTabId);
return mav;
}
public PageDo getPage(){
PageDo page = new PageDo();
String curPage = request.getParameter("pageNum");//当前页
String pageSize = request.getParameter("numPerPage");//每页的条数
if(StringUtils.isNotBlank(curPage)){
long currentP = 1;
try{
currentP = Long.parseLong(curPage);
if(currentP < 1){
currentP = 1;
}
}catch(Exception e){
currentP = 1;
}
page.setPageNum(currentP);
}
if(StringUtils.isNotBlank(pageSize)){
int pSize = Constants.PAGESIZE;
try{
pSize = Integer.parseInt(pageSize);
if(pSize < 1){
pSize = Constants.PAGESIZE;
}
}catch(Exception e){
pSize =Constants.PAGESIZE;
}
page.setPageSize(pSize);
}
return page;
}
/** 基于@ExceptionHandler异常处理 */
@ExceptionHandler
public ModelAndView exp(HttpServletRequest request, Exception ex) {
ModelAndView mv = new ModelAndView();
if (ex instanceof SessionException) {
return this.ajaxFailure(ex.getMessage());
} else if (ex instanceof RuntimeException) {
return this.ajaxFailure(ex.getMessage());
} else {
return this.ajaxFailure("数据异常");
}
}
}