关于后台的增加修改功能以及保存功能时页面来回跳转方式

开发环境:springnoot,Redis,easyUI(有自己封装的)
实现的功能如图:先点击左边的树,展示所选择的的节点下的数据,同时将树的名称带到增加页面(如果没选择左边的树直接点击添加则不显示树名称),点击增加或修改都会跳转到此页面,(只不过增加是不用回显数据)
在这里插入图片描述
第一种跳转方式:通过spring的controller层实现,增加修改都会走,这种方式增加修改保存都要写后台代码,这种方式是最基础的,也是最通用的,但也是最麻烦的,
前台页面JS代码

//增加,修改
        function edit(id) {
            let url = '/user/product/edit';
            let row = $("#dg").datagrid("getSelected");
            if(!id){
                let treeRow = $("#tt").tree('getSelected');
                if(treeRow){
                    url += "?productCategoryId=" + treeRow['id'];//括号里的测试要写id,不能是其他的,不然增加页面不显示选择树名称
                }
            }else{
                url += "?productId=" + row['productId'];
            }
            j.open(url,"editWin",{},500,600);
        }

修改页面保存跳转路径:通过第一种方式的保存也要写后台代码,
在这里插入图片描述
后台代码:

 /**
     * 页面跳转,
     * @param productId,可选,增加时为空,修改时为选择的哪一行的主键,
     * @param modelMap,通过实体返回到修改页面的方式
     * @return
     */
    @RequestMapping(value = "/edit")
    public String showProductUI(@RequestParam(name = "productId",required = false)Integer productId, ModelMap modelMap){
        PdProductDO pdProductDO = null;
        if(StringUtils.isNotEmpty(StringUtils.valueOf(productId))){
            pdProductDO = productService.getProduct(productId);
        }
        modelMap.addAttribute("d",pdProductDO);
        return "product/productSetting/edit";
    }

第二种方式
前台的JS页面不会改变,与第一种保持一致
后台的controller依然要写页面跳转,与第一种保持一致
只是保存时不用写后台代码,需要在修改页面配置一下,(这种保存只适用于保存的字段不会有其他操作,比如需要生成随机字符串就不行了,还需要使用第一种,)
修改页面的配置如图,只需要将action的属性换成entityKey即可,entitykey后面的值是对应要保存的那张的表名称,此表对应的实体的主键上要加上@desId注解,此种方式使用了框架的保存方式,有局限性
在这里插入图片描述
第三种方式
前台JS代码:此方式也是使用框架,不用写后台跳转的controller(增加修改都不需要写),只是要在对应的实体的主键上要加上@desId注解,page后跟的是页面路径(前提是spring配置好了前缀后缀)

//增加
        function add() {
            let productId = $("#productId").val();
            let url = '<h:forwardUrl page="product/productSetting/relationBusinessMap/add"/>' + "?productId=" + productId;
            j.open(url,"addWin",{},500,500);
        }

修改的保存功能与第二种方式一致
这种跳转只是单一的页面跳转,不会回显数据,如果想要回显数据需要h标签要换一个属性,代码如下,
eneityKey跟的是对应的表名称,editFormPage后跟的是页面路径

 //编辑
        function edit(desId) {
            var page = "<h:showEditForm entityKey="card_card_merchant" editFormPage="product/merchantCardSetting/edit"/>" + desId;;
            j.open(page,"editMerchantCardWin",null,500,540);
        }

这三种方式只适用于不才自己写的,勿商用

猜你喜欢

转载自blog.csdn.net/qq_42689281/article/details/86537556