`
465272694
  • 浏览: 52298 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Controller功能封装

阅读更多
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对请求封装和返回

    `Controller对请求封装和返回`这个主题主要涉及如何有效地设计和实现Controller层,以便处理来自客户端的请求,并以适当的方式返回响应数据。ControllerUtils类的引入,通常是为了提供一些通用的方法,帮助简化...

    codeigniter-base-controller-master

    "codeigniter-base-controller-master" 是一个基于CodeIgniter的项目,它扩展了默认的控制器(Controller)类,增加了额外的功能和封装,以提升开发效率和代码复用性。 1. **CodeIgniter框架基础** CodeIgniter是...

    SpringMVC+Mybatis封装实例

    在封装SpringMVC时,我们可以创建一个BaseController,将通用的处理逻辑如权限验证、日志记录等放入其中,以便所有继承自BaseController的控制器都能自动应用这些功能。 Mybatis则是一个轻量级的ORM(对象关系映射...

    64833712Fuzzy-PID-Controller-Design.rar

    在MATLAB中,模糊逻辑工具箱(fuzzy logic toolbox)提供了创建、编辑和分析模糊系统所需的所有功能。例如,`fuzzypid.fis`文件很可能是一个已经定义好的模糊推理系统(fuzzy inference system)文件,包含了输入...

    一些AD封装库

    在电子设计领域,AD(Altium Designer)是一款广泛使用的电路设计软件,它集成了原理图设计、PCB布局、仿真、3D查看以及制造输出等多个功能。本压缩包中的"AD封装库"是一系列预定义的电路元件模型,用于帮助工程师...

    adcontroller控制

    文件"CJPAdController"可能是这个adcontroller实现的具体代码文件,包含了上述功能的实现细节。通过阅读和理解这个文件,开发者可以学习如何在自己的项目中创建类似的广告控制器,以实现广告的高效管理和展示。同时...

    Laravel开发-apicontroller

    这个apicontroller项目兼容两者,意味着它能利用Laravel的强大功能,同时保持在Lumen环境下的高性能。 4. **Jeffrey Way的启发** Jeffrey Way是Laravel生态系统中的知名开发者和教育者,他的工作经常推动Laravel...

    unity Camera Controller 3.26.rar

    Camera Controller 3.26通过封装和扩展Unity的内置相机功能,使得开发者能够轻松实现复杂的相机运动和行为,如平滑移动、旋转、缩放以及视角切换。这不仅提升了游戏的视觉体验,也为玩家提供了更加沉浸式的游戏环境...

    angular service controller分层示例

    在AngularJS中,服务(Service)和控制器(Controller)是两个关键的概念,它们在构建复杂的前端应用程序时起着至关重要的作用。本示例"Angular Service Controller分层示例"旨在展示如何有效地使用这两个组件来实现...

    stm32全系列引脚封装(不包括Z系列的)

    了解STM32的引脚封装和功能分布对于设计电路至关重要。在实际应用中,需要根据项目需求选择合适的芯片型号,并合理布局PCB,确保信号完整性和电源稳定性。在设计过程中,通常会参考STM32的数据手册和参考设计,如...

    tp5微信小程序封装类库

    TP5是中国最流行的PHP开发框架之一,它采用MVC(Model-View-Controller)架构模式,提供了丰富的功能和优秀的性能。框架的核心特性包括路由、模型、视图、控制器、数据库操作等,极大地提高了开发效率。 接下来,...

    ios数据库的封装

    本文件主要针对iOS环境下的数据库操作进行了封装,采用了MVC(Model-View-Controller)设计模式,使得代码结构清晰,职责明确。下面将详细阐述这一封装过程中的关键知识点。 1. **SQLite数据库**:iOS中最常见的...

    参数封装成对象-手动封装(非springmvc)

    在这个场景下,"参数封装成对象-手动封装(非springmvc)"指的是不依赖Spring MVC框架的自动模型绑定功能,而是通过手动方式将表单提交的数据转换为Java对象。以下将详细介绍这一过程及其相关的知识点。 首先,我们...

    echartsJava后台封装数据

    在IT行业中,ECharts是一款由百度开发的开源JavaScript可视化库,它提供了丰富的图表类型和强大的交互功能,广泛应用于Web前端的数据展示。而将ECharts与Java后端相结合,可以实现动态数据的实时更新和高效传输,...

    SpringMVC controller

    在SpringMVC中,用户请求的数据通常会被封装在Model中,并通过Controller返回给视图(View),最后展示给用户。而视图的作用就是将模型数据以合适的方式展示给用户。 在创建基于SpringMVC的Web应用程序时,需要在...

    Realtek PCIe GBE Family Controller

    3. **数据传输**:驱动程序处理从应用程序到网络控制器的数据传输,包括数据包的封装、解封装,以及错误检查和纠正。 4. **中断处理**:当网络控制器接收到数据或完成一项任务时,会向CPU发送中断信号。驱动程序...

    php自己封装的mvc

    7. **命名空间(Namespace)**:为了避免类名冲突,自封装的MVC框架可能会使用PHP的命名空间功能,对不同层次的类进行组织。 8. **依赖注入(Dependency Injection)**:这是一种设计模式,有助于解耦代码,提高可...

    常用的DIP28封装库,适用于Autium Designer 的元件常用PCB封装(.zip

    Autium Designer是一款功能强大的PCB设计工具,提供了丰富的封装库供用户选择和自定义,以满足不同项目的需求。 这个压缩包内的文件“常用的DIP28封装库,适用于Autium Designer 的元件常用PCB封装”可能是以某种...

    Spring Boot Mybatis 自动生成Entity,controller、serviceImpl ,Dao,方便开发,无需手写

    自动代码生成是这个项目的核心功能,它可以帮助开发者快速生成常见的Java开发组件,如Entity、Controller、ServiceImpl、Dao等。Entity类用于数据模型的表示,Controller处理HTTP请求,ServiceImpl定义业务逻辑,...

    自己封装的一些类库,包括(model,page,tpl,水印,缩放等)

    封装的`水印`类库通常包括设置水印位置、透明度、大小等功能,使得在处理大量图片时能够自动化、高效地添加水印。 `缩放`功能可能涉及到图像处理,它可以帮助调整图像的尺寸,满足不同场景的需求,如适应不同设备的...

Global site tag (gtag.js) - Google Analytics