kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

9月16日に、Vectorから、ajaxで名称表示などのバグ修正「Ver1.4(202109080000)」公開OKのメールが来た。

1.Vectorから「kaz_javaSpringBootプログラム自動作成◎生成ツール」(
www.vector.co.jp
ajaxで名称表示などのバグ修正「Ver1.4(202109080000)」が公開OKとなった。

修正履歴は以下のようになる。
注意:但しコントローラの「@PostMapping(params="mode=insList_add")」メソッドと
   「@PostMapping(params="mode=insList_del")」メソッドは
    ”属性例外発生のエラーは@Validatedしなくても、例外発生で落ちることなく
    「BindingResult result」で取得できることがわかった。”
   ことによる修正を次回のVerUpで行う。
・1.4(202109080000)
 1.バグ修正
  ■「検索・入力ajax」(1.2(202108180000)で追加)ができるようになったので
   Long項目に"aaa"が入力できるようになり、例外が発生する。

   対処:DbElementsControllerでエレメントがLongのときに、
      入力が数字でないとき空文字名称を戻すことにした。
   補足:「検索・入力プルダウン」(SELECT項目)時はエレメント値しか選べないので例外発生はなかった。
   ①DbElementsController.java
    例:修正前
    if (fmElementNm.equals("ary_lrgmidsml_biztype")) {
     if (!ObjectUtils.isEmpty(fmLrgKey)) {
      //表示名を設定
      map.put("LrgName",dbElementsService.getBizname(Long.parseLong(fmLrgKey), getAllFlg));
     } else {
      map.put("LrgName", "");
     }
    }
    修正後
    if (fmElementNm.equals("ary_lrgmidsml_biztype")) {
     if (!Functions.isItemEmptyOrNoGood(fmLrgKey, true)) {
      //表示名を設定
      map.put("LrgName",dbElementsService.getBizname(Long.parseLong(fmLrgKey), getAllFlg));
     } else {
      map.put("LrgName", "");
     }
    }

   ②com.kaz01u.demo.utils.Functions.javaに追加
    /**
    * 項目値のチェック。
    * @param str 項目値
    * @param longKbn true:Long false:Long以外
    * @return true:NULLまたは空白または属性例外、false:NULL以外かつ空白以外かつ属性例外以外
    */
    public static boolean isItemEmptyOrNoGood(String str, boolean longKbn) {
     boolean flg  = true;
     if (!ObjectUtils.isEmpty(str)) {
      if (longKbn) {
       boolean isNumber = str.codePoints()
           .allMatch(Character::isDigit);
       if (isNumber) {
        flg  = false;
       }
      }else {
       flg  = false;
      }
     }
     return flg;
    }

   ③hinagata中の変更は
    変更内容
    import com.kaz01u.demo.utils.Functions;
    ObjectUtils.isEmpty(fmLrgKey) → Functions.isItemEmptyOrNoGood(fmLrgKey, ■{LrgKeyLongKbn}■)
    ObjectUtils.isEmpty(fmMidKey) → Functions.isItemEmptyOrNoGood(fmMidKey, ■{MidKeyLongKbn}■)
    ObjectUtils.isEmpty(fmSmlKey) → Functions.isItemEmptyOrNoGood(fmSmlKey, ■{SmlKeyLongKbn}■)
    対象ファイルは
    作成例\hinagata\java\controller\01_00_DbElementsController.txt
    作成例\hinagata\java\controller\01_03_00_DbElementsGets_LrgMidSml部品.txt
    作成例\hinagata\java\controller\01_03_00_DbElementsGets_LrgMid部品.txt
    作成例\hinagata\java\controller\01_04_00_DbElementsGets_LrgMidSml部品.txt
    作成例\hinagata\java\controller\01_04_00_DbElementsGets_LrgMid部品.txt
    作成例\hinagata\java\controller\01_04_00_DbElementsGets_Lrg部品.txt
   ④VBAの変更は
    templateなどOtaasukeクラス

  ■前回の修正1.3(202108290000)で、各テーブル用コントローラの「@PostMapping(params="mode=insList_add")」メソッドで、
   @Validatedを修正したが、大分類、中分類、小分類の、DBエレメントを作成する処理は、入力エラーでもやらないといけない
   ということを加味していなかった。
   ので「if (result.hasErrors())」より前に、大分類、中分類、小分類の、DBエレメントを作成する処理を行うように変更する。

  ■前回の修正1.3(202108290000)で、各テーブル用コントローラの「@PostMapping(params="mode=insList_del")」メソッドで、
   @Validatedを修正したが、大分類、中分類、小分類の、DBエレメントを作成する処理は、入力エラーでもやらないといけない
   ということを加味していなかった。
   ので「if (result.hasErrors())」より前に、大分類、中分類、小分類の、DBエレメントを作成する処理を行うように変更する。