import cn.org.rapid_framework.beanutils.BeanUtils;
import cn.org.rapid_framework.page.Page;
import cn.org.rapid_framework.page.PageRequest;
import com.iloosen.imall.commons.util.ConvertRegisterHelper;
import com.iloosen.imall.commons.util.PageRequestFactory;
import org.springframework.ui.ModelMap;
import org.springframework.util.Assert;
import org.springframework.util.ReflectionUtils;
import javax.servlet.http.HttpServletRequest;
/**
* 标准的rest方法列表
* <pre>
* /userinfo => index()
* /userinfo/new => _new() 注意: 不使用/userinfo/add => add()的原因是ad会被一些浏览器当做广告URL拦截
* /userinfo/{id} => show()
* /userinfo/{id}/edit => edit()
* /userinfo POST => create()
* /userinfo/{id} PUT => update()
* /userinfo/{id} DELETE => delete()
* /userinfo DELETE => batchDelete()
* </pre>
*
* @author badqiu
*/
public class BaseRestSpringController<Entity,PK> {
protected static final String CREATED_SUCCESS = "创建成功";
protected static final String UPDATE_SUCCESS = "更新成功";
protected static final String DELETE_SUCCESS = "删除成功";
static {
//注册converters
ConvertRegisterHelper.registerConverters();
}
public static void copyProperties(Object target,Object source) {
BeanUtils.copyProperties(target, source);
}
public static <T> T copyProperties(Class<T> destClass,Object orig) {
return BeanUtils.copyProperties(destClass, orig);
}
public static ModelMap toModelMap(Page page,PageRequest pageRequest) {
return toModelMap("",page, pageRequest);
}
public static ModelMap toModelMap(String tableId,Page page,PageRequest pageRequest) {
ModelMap model = new ModelMap();
saveIntoModelMap(tableId,page,pageRequest,model);
return model;
}
/**
* 用于一个页面有多个extremeTable是使用
* @param tableId 等于extremeTable的tableId属性
*/
public static void saveIntoModelMap(String tableId,Page page,PageRequest pageRequest,ModelMap model){
Assert.notNull(tableId,"tableId must be not null");
Assert.notNull(page,"page must be not null");
model.addAttribute(tableId+"page", page);
model.addAttribute(tableId+"totalRows", Integer.valueOf(page.getTotalCount()));
model.addAttribute(tableId+"pageRequest", pageRequest);
model.addAttribute(tableId+"query", pageRequest);
}
public static PageRequest bindPageRequest(HttpServletRequest request,PageRequest pageRequest,String defaultSortColumns){
return PageRequestFactory.bindPageRequest(pageRequest,request, defaultSortColumns);
}
public static <T> T getOrCreateRequestAttribute(HttpServletRequest request, String key,Class<T> clazz) {
Object value = request.getAttribute(key);
if(value == null) {
try {
value = clazz.newInstance();
} catch (Exception e) {
ReflectionUtils.handleReflectionException(e);
}
request.setAttribute(key, value);
}
return (T)value;
}
public void setSuccess(ModelMap model){
model.put("success","true");
}
public void setFailure(ModelMap model){
model.put("success","false");
}
}
Controller功能封装
最新推荐文章于 2024-07-02 14:39:40 发布