全国咨询热线:400-618-9090

首页技术文章正文

Java的新项目学成在线笔记-删除页面

创建时间:2019-01-10 16:53:35.0 来源:黑马程序员

 
用户操作流程:
1、用户进入用户列表,点击“删除”
2、执行删除操作,提示“删除成功”或“删除失败” 
  4.1 删除页面接口定义 
[AppleScript] 纯文本查看 复制代码
1
2
@ApiOperation("通过ID删除页面")
 public ResponseResult delete(String id);

4.2 删除页面服务端开发 
4.2.1Dao 
使用 Spring Data提供的deleteById方法完成删除操作 。
4.2.2 Service 
[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
//删除页面  
  public ResponseResult delete(String id){   
     CmsPage one = this.getById(id);    
    if(one!=null){     
       //删除页面    
        cmsPageRepository.deleteById(id);       
     return new ResponseResult(CommonCode.SUCCESS);     
   }     
   return new ResponseResult(CommonCode.FAIL);    
}

4.2.3Controller 
[AppleScript] 纯文本查看 复制代码
1
2
3
4
@DeleteMapping("/del/{id}") //使用http的delete方法完成岗位操作
 public ResponseResult delete(@PathVariable("id") String id) {
   return pageService.delete(id);
}

4.3 删除页面前端开发 
4.3.1 Api方法 
[AppleScript] 纯文本查看 复制代码
1
2
3
/*页面删除*/ export const page_del = id => {
   return http.requestDelete(apiUrl+'/cms/page/del/'+id)
 }

4.3.2编写页面 
1、在page_list.vue页面添加删除按钮
[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
<el‐table‐column label="操作" width="120">  
     <template slot‐scope="page">
        <el‐button   
        size="small"type="text"     
      @click="edit(page.row.pageId)">编辑     
    </el‐button>     
    <el‐button       
    size="small"type="text"   
        @click="del(page.row.pageId)">删除   
      </el‐button>   
    </template>  
   </el‐table‐column>

2、删除事件

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
//删除 
      del:function (pageId) {      
   this.$confirm('确认删除此页面吗?', '提示', {}).then(() => {
           cmsApi.page_del(pageId).then((res)=>{    
         if(res.success){    
           this.$message({       
          type: 'success',        
        message: '删除成功!'    
           });     
          //查询页面 
              this.query()   
          }else{       
        this.$message({   
              type: 'error',  
               message: '删除失败!' 
              });     
       }       
    })     
      })
      }

5 异常处理 5.1 异常处理的问题分析 
从添加页面的service方法中找问题:

[AppleScript] 纯文本查看 复制代码
1
2
3
4
//添加页面 
   public CmsPageResult add(CmsPage cmsPage){ //校验页面是否存在,
根据页面名称、站点Id、页面webpath查询        
        CmsPage cmsPage1 =

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),  cmsPage.getSiteId(), cmsPage.getPageWebPath());  
       if(cmsPage1==null){   
         cmsPage.setPageId(null);
//添加页面主键由spring data 自动生成    
        cmsPageRepository.save(cmsPage)
           //返回结果        
    CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS,cmsPage);      
      return cmsPageResult; 
       }    
    return new CmsPageResult(CommonCode.FAIL,null)
   }

问题:
1、上边的代码只要操作不成功仅向用户返回“错误代码:11111,失败信息:操作失败”,无法区别具体的错误信 息。
2、service方法在执行过程出现异常在哪捕获?在service中需要都加try/catch,如果在controller也需要添加 try/catch,代码冗余严重且不易维护。
解决方案:
1、在Service方法中的编码顺序是先校验判断,有问题则抛出具体的异常信息,最后执行具体的业务操作,返回成 功信息。
2、在统一异常处理类中去捕获异常,无需controller捕获异常,向用户返回统一规范的响应信息。
代码模板如下:

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
//添加页面 public CmsPageResult add(CmsPage cmsPage){
   //校验cmsPage是否为空  
  if(cmsPage == null){    
    //抛出异常,非法请求   
     //... 
   }   
 //根据页面名称查询(页面名称已在mongodb创建了唯一索引)  
 CmsPage cmsPage1 =  cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),  cmsPage.getSiteId(), cmsPage.getPageWebPath())
   //校验页面是否存在,已存在则抛出异常 
   if(cmsPage1 !=null){    
    //抛出异常,已存在相同的页面名称   
     //... 
   }    
cmsPage.setPageId(null);//添加页面主键由spring data 自动生成  
  CmsPage save = cmsPageRepository.save(cmsPage);
    //返回结果 
   CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS,save)
   return cmsPageResult; }

                                 

作者:黑马程序员JavaEE培训学院
首发:http://java.itheima.com/

在线咨询 我要报名