zoukankan      html  css  js  c++  java
  • JS、Action文件讲解

    --初始化

    function ajax_init(response){
       //response  Action回传页面的参数
       var dataWrap = response.getAjaxDataWrap("dataWrap") ;
        //从DataCenter中获取相应的dataWrap数据
        ajaxgrid.setData(dataWrap) ; 
        //用表格展现数据
        var record = dataWrap.getData(); 
        //获取封装的数据
        ajaxform.setRecord(record); 
        //setRecord获取数据源,ajaxform一行注释掉,ajaxform表单显示的数据为空
    }

    --查询功能

    function retrieve(){
        var data = ajaxgrid.collectData(true) ;
        //查询数据时,需要将页面数据收集上传,可以调用表格的collectData方法。
        var dataArr = [] ;
        dataArr.push(data);
        $.request({
            action:"retrieve",
            data:dataArr,
            success:ajax_init
        }) ;
    }    

     --ajax请求

    $.request
    ({
    Action:"调用的后台方法名称",
    Saync:true || false, 
    //同步或异步调用
    Pageparam: "all" || "none", 
    //是否收集页面上的upload="true"的值进行上传
    data:dataArr,
    //收集表格或form中的属性
    //该属性为数组格式
    Params:{"收集用户自定义参数":"参数值"}, 
    //
    json数据格式,对应Action中的属性名称及值或者对应Action中封装的property对象中的key及值。
    //收集用户自定义的参数,后台用参数的get方法获取,多个参数用,隔开
    Success:回调方法 
    //成功后的调用方法
    });

    --添加功能

    function add(){
        $.request({
            action:"add",
            success:onaddcomplete
        });
    }
    function onaddcomplete(response){
        var rec = response.getAjaxDataWrap("dataWrap").getData();
        //获取dataWrap中的单条的数据
        ajaxgrid.addRecord(rec) ; 
      //表格添加一条记录
    }

     --保存数据方法

    Save方法也很简单,保存前判断是否进行校验:if(ajaxgrid.isValid()),然后收集数据,调用后台方法,在保存成功后,在回调方法中要重置record缓存数组:ajaxgrid.reset()

    function save(){
        if(ajaxgrid.isValid()){
    //校验表格数据是否合法
            var gridData = ajaxgrid.collectData(false,"update") ;
    //收集表格数据
            var dataArr = [] ;
            dataArr.push(gridData) ;
    //将收集的数据放入数组对象中
            $.request({
    //调用后台方法
                action:"save",
                data:dataArr,
                success:onsavecomplete
            }) ;
        }
    }
    function onsavecomplete(response){
        ajaxgrid.reset();
    //重置表格修改标志
        $.alert('提示信息',response.getMessage()) ;
    //获取后台传递的自定义信息
    
    } 

     --Action文件

    @Namespace("/demo")
    @ParentPackage("framework-default")
    @Action(value = "/demo", results = {@Result(name="input",location="demo.jsp")})
    publicclass DemoAction extends AjaxAction {
    privatestaticfinallongserialVersionUID = 1L;
    private AjaxDataWrap<DemoStudent>dataWrap = new AjaxDataWrap<DemoStudent>();
    //页面的数据封装,包括数据列表、单条数据、固定查询条件和分页对象,AjaxDataWrap为和ajax表格配合使用的DataWrap,比DataWrap多了增加、删除和更新记录三个列表。
    /**
         *查询操作
         */
        @Override
        publicvoid retrieve() {
            QueryParamList params = getQueryParam("dataWrap");
    //获取指定名字的dataWrap的查询参数
            dataWrap.setDataList(调用方法查询数据,返回结果为List< DemoStudent>);
    //调用方法查询数据,返回结果为List< DemoStudent>
            responseData.setAjaxDataWrap("dataWrap", dataWrap);
    //向DataCenter对象中添加一个ajaxDataWrap
        }
        /**
         * 添加一条记录
         * @throws Exception
         */
        publicvoid add() throws Exception {
            dataWrap.setData(new DemoStudent());
    //向DataCenter对象中添加单条记录
            responseData.setAjaxDataWrap("dataWrap", dataWrap);
        }
        /**
         *保存操作
         */
        publicvoid save() {
            List<DemoStudent> updateList = this.dataWrap.getUpdateList() ;
            List<DemoStudent> insertList = this.dataWrap.getInsertList() ;
            List<DemoStudent> deleteList = this.dataWrap.getDeleteList() ;
            //调用方法保存增删改列表数据
    //处理页面上传的数据
            responseData.setMessage("保存成功") ;
        }
        /**
         *初始化
         */
        @Override
        protectedvoid initTreat() {
            super.retrieveAfterInit = true ;
    //initTreat方法初次加载页面时调用,retrieveAfterInit表示是否执行retrieve方法
            this.dataWrap.getPageInfo().setRowOfPage(15);
    //设置表格每页展示15条数据
        }
        @Override
        public AjaxDataWrap<DemoStudent> getDataWrap() {
    //默认DataWrap的get方法,这里必须指定泛型有具体类型。如果页面组件使用的是这个方法返回的DataWrap,那么页面组件的name是”dataWrap”,不是这个方法返回的dataWrap的名字。
            return dataWrap;
        }
    }

     Action类的最前面我们看到一些配置信息,其中:

    @Namespace(/demo) 表示action的名字空间,和Actionvalue组合起来作为URL@ParentPackage(framework-default)表示所在Action需要继承framework-default包。@Action(value="..",results= {@Result(name="..",location="..")})是配置的Action跳转,value的值对应了前台的JSP文件中s:form标签的action的属性值。Result指向了打开的jsp文件,如果location的值是以/打头,那么jsp文件就是从WebRoot根下开始的文件路径,否则就是从WebRoot@Namespace(..)路径下的文件路径。

    谢谢大家的阅读,阅读后记得关注一下呦!
  • 相关阅读:
    用cdsview创建objectpage
    Promise的一个小例子
    使用CDSVIew创建List Report
    abap各种常用功能
    新建cdsview时的几个注解说明
    使用ABAP CDS views创建一个分析模型并设置参数
    使用ABAP CDS views 创建一个分析模型
    sapui5 walkthrough 26-30
    sapui5 walkthrough 21-25
    T-code 大全
  • 原文地址:https://www.cnblogs.com/bhy-1116/p/8313776.html
Copyright © 2011-2022 走看看