关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 13652|回复: 4

[Online开发] 单表类型的异常抛出

[复制链接]
发表于 2018-11-9 14:24:08 | 显示全部楼层 |阅读模式
      版本3.7.3-3.8都存在这样的现象,在设置单表类别捕获了事务异常,但是在操作者页面,只是报操作错误而没有描述具体的错误信息,譬如一个事务异常,跟踪发现异常信息报:终止日期小于起始日期,请确认!但在操作者页面报的只是操作错误。。。。。

    /**
    * sql业务增强
    *
    */
   public void executeSqlExtend(String formId,String buttonCode,Map<String, Object> data)  throws BusinessException{
      //根据formId和buttonCode获取
      CgformButtonSqlEntity cgformButtonSqlVo = getCgformButtonSqlByCodeFormId(buttonCode,formId);
      if(cgformButtonSqlVo!=null){
         //获取sql参数注入参数
         String sqlPlugin = cgformButtonSqlVo.getCgbSqlStr();
         if(StringUtils.isNotEmpty(sqlPlugin)){

            boolean isMiniDao = false;
            logger.debug("sql plugin -------->"+sqlPlugin);                  
            String sqlPluginTemp = formateSQl(sqlPlugin,  data);
            logger.debug("sql formate plugin -------->"+sqlPluginTemp);
            try{
               //注入系统环境变量(支持占位符用法)
               data = minidaoReplaceExtendSqlSysVar(data);
               sqlPlugin = FreemarkerParseFactory.parseTemplateContent(sqlPluginTemp, data);
               isMiniDao = true;
            }catch(Exception e){
               logger.debug(e.getMessage());
               logger.debug("minidao转换不成功,使用正常sql处理");
               sqlPlugin = sqlPluginTemp;
            }

            String [] sqls = sqlPlugin.split(";");
            for(String sql:sqls){

               //添加逻辑后,有可能造成sql为空
               if(sql == null || sql.toLowerCase().trim().equals("")){
                  continue;
               }

               /*if(sql.toLowerCase().indexOf(CgAutoListConstant.SQL_INSERT)!=-1
                     ||sql.toLowerCase().indexOf(CgAutoListConstant.SQL_UPDATE)!=-1){*/
               if(true){

                  //执行sql

                  int num = 0;
                  if(isMiniDao){
                     try {
                        num = namedParameterJdbcTemplate.update(sql, data);
                     } catch (Throwable e) {
                        logger.error(e.getMessage());
                        e.printStackTrace();
                        throw new BusinessException(e.getMessage());
//                      e.printStackTrace();
                     }
                  }else{
                     try {
                        num = this.executeSql(sql);
                     }catch (Throwable e) {
                        logger.error(e.getMessage());
                        e.printStackTrace();
                        throw new BusinessException(e.getMessage());
//                      e.printStackTrace();
                     }
                  }
发表于 2018-11-9 14:43:32 | 显示全部楼层
这个问题我记得我改过了,也测过了,也回复过了,我现在再测一边,没有问题的话,你以后的问题我不会再理。
发表于 2018-11-9 15:06:33 | 显示全部楼层
http://www.jeecg.org/forum.php?m ... &extra=page%3D3
这个帖子我再给你找出来,我就纳闷了,这异常没抛出去吗?你自己在控制层get一下不行吗?
发表于 2018-11-9 15:44:11 | 显示全部楼层
本帖最后由 jeecg_ty 于 2018-11-9 15:46 编辑

我也不多说了,我直接把我测试的贴出来你自己看看:
我先在一张表上定义一个触发器:如果更新的时候字段值是1234那么抛出异常 异常信息"手动抛出异常"
  1. drop trigger if exists `testupdate`;
  2. CREATE TRIGGER `testupdate`#
  3. BEFORE update   
  4. ON test_single
  5. FOR EACH ROW
  6. begin
  7.   
  8.     if new.name ='1234' then
  9.         
  10.                         SIGNAL SQLSTATE 'ABC00' SET MESSAGE_TEXT = '手动抛出异常' ;
  11.     else
  12.      
  13.                         SET new.CREATE_DATE = NOW();
  14.     end if;
  15. end;
复制代码
然后找张表测试:
结果如图:
NDK8J8~25$[HRC[0{Q~X@{U.png

 楼主| 发表于 2018-11-16 08:59:28 | 显示全部楼层
本帖最后由 luckystar 于 2018-11-16 09:01 编辑

      在设置单表类别捕获了事务异常,但是在操作者页面,只是报操作错误而没有描述具体的错误信息

看不明白吗?就是异常已经抛了出来,但是页面没有显示出来!使用的是online定制的页面没有具体错误信息,不过现在好了,不管了。。。。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表