ここのところの、「kaz_javaSpringBootプログラム自動作成◎生成ツール」に機能追加。DBデータの大中小分類直接コード入力、ajaxで名称表示。の追加完了
「kaz_javaSpringBootプログラム自動作成◎生成ツール」
関連キーワード(テーブル ,自動生成 ,定義 ,java ,Security ,Spring ,DB ,SpringBoot ,Thymeleaf ,JPA)
https://www.vector.co.jp/soft/winnt/prog/se523123.html
のバグ修正および機能追加が完了した。本日VectorにVer1.2(202108180000)で登録依頼する。
修正履歴は以下のようになる。
・1.2(202108180000)
1.バグ修正
■自動生成された一括登録画面の項目「年月日[yyyy/mm/dd]」にバグがあり、入力できない。
(他の画面はOKだった)
これは、JKL呼び出しの時"frmL"をパラメータにしていたが、"frm"でなければいけなかった。ので、修正する。
■各テーブル用コントローラの「@PostMapping(params="mode=insList_add")」メソッドで現在、
@Validated(入力チェック)を行っていないが、typeMismatchエラー(例、金額欄に文字を入れた時)が
起きる可能性があるので、入力チェックを行いエラー時は戻るようにする。
■各テーブル用コントローラの「@PostMapping(params="mode=insList_del")」メソッドで現在、
@Validated(入力チェック)を行っていないが、
@Validated(入力チェック)を行って入力エラーを無視するようにする。
まいったな、これでVectorに登録申請したが、入力エラーを無視するPGMにしたらうまくいかなかったので、入力チェックを行いエラー時は戻るようにPGM修正しておいた。まあ、PGM的には間違っていないのでいいかな。
■自動作成された「result.rejectValue("xxxx", "validation.xxxx", new String[] {"『XXXX』"}, "");」の
「"validation.xxxx"」を"validation.category"にする。
これは、messages.propertiesの"validation.category"を固定で使用するので。
■DBエレメントから名称が取得できないとき「java.lang.NullPointerException: null」になるので修正する。
「テーブル名.getテーブルIDObj().get分類名の項目ID()」を
「ObjectUtils.isEmpty(テーブル名.getテーブルIDObj())?"":テーブル名.getテーブルIDObj().get分類名の項目ID()]に変更する。
2.仕様追加
[1]ツール修正
■「javaSpringBootテーブル項目一覧などの定義.xlsm」の「★TOOL用コンスタント★」シート
A列の「検索・入力プルダウン」の次行に「検索・入力ajax」を追加する。
これにより、DBデータの大分類、中分類、小分類を画面から入力する時、直接コード入力して、
ajaxで名称を表示するようにする。
・さらに「javaSpringBootプログラム作成マクロ.xlsm」のReadMeシート・352行あたりの
「強制的に「検索・入力プルダウン」に変更します。」を
検索・入力プルダウン以外かつ、検索・入力ajax以外の場合、強制的に「検索・入力プルダウン」に変更します。
に書き換えます・
・さらに「javaSpringBootプログラム作成マクロ.xlsm」のReadMeシート・353行あたりに
検索・入力ajaxを指定した場合、強制的に「検索・入力プルダウン」に変更します。
■「javaSpringBootテーブル項目一覧などの定義.xlsm」の標準モジュール「Module12」マクロを修正する。
■「javaSpringBootプログラム作成マクロ.xlsm」の「Module1_一気にPGM作成Otaasuke」マクロを修正する。
[2]自動作成後のPGMがどのようになるか
■javaScript中の変更することができるvarをletに変更する。
最近はletのほうが一般的なので、自分で作成したものに関しては修正する。
■同一セッション内のリクエストの同期を行うための追加
理由:以下のような情報がWEBに掲載されていたため
@SessionAttributesアノテーション、またはsessionスコープのBeanを使用する場合は、
同一セッション内のリクエストを同期化することを推奨する。
同期化しない場合、セッションに格納されているオブジェクトに、同時にアクセスする可能性があるため、
想定外のエラーや、動作を引き起こす原因になりうる。
①/demo/config/EnableSynchronizeOnSessionPostProcessor.java 新規追加
②/src/main/java/com/kaz02u/demo/WebConfig.java 修正
EnableSynchronizeOnSessionPostProcessor.javaのbean定義を追加
■serviceクラスの@Transactionalを@Transactional(rollbackFor=Throwable.class)に修正
理由:以下のような情報がWEBに掲載されていたため
ロールバックは非検査例外(RuntimeExceptionとそのサブクラス)にのみ適応され、
検査例外(RuntimeExceptionとそのサブクラス以外)に関してはデフォルトでは
ロールバックされずコミットされる
■各テーブル用AmendRegister.htmlの以下を削除する
理由: Thymeleafのテンプレートレイアウト機能により
<div th:fragment="mainSub" th:remove="tag">がAmend.html、Register.htmlのmainSubに置き換わる。ので、
mainSub以外(以下箇所)は使用されない。
”登録”、”リセット”ってあるので誤解してしまうかもしれないので削除する。
<!-- tbl-01 end -->
<p class="text-center"><a href="javascript:do_Submit_Clk1();"><img src="/img/btn/button-sub.gif" alt="登録" width="61" height="22" border="0" class="right5" /></a>
<a th:href="'javascript:submitFrm5(\'/members/admin/・・・\', \'ins\')'"><img src="/img/btn/button-reset.gif" alt="リセット" width="84" height="22" border="0" /></a></p>
■各テーブル用Controllerクラスの「@PostMapping(params="mode=del_do")」メソッドに、テーブル削除済みチェックを追加する。
■DBデータの大分類、中分類、小分類を画面から入力する時、直接コード入力して、
ajaxで名称を表示するようにすることもできるようにする。
◆XX情報登録
①DbElementsController.java
a.「@Autowired DbElementsService dbElementsService;」を追加
b.dbElem2(大分類、中分類、小分類のいずれかに入力項目(selectでない項目)があるときの、チェンジ関数のajaxから呼ばれるエレメント取得)関数追加
②XxxxxxController.java
a.xxxxxxInsSub(XX情報登録表示処理SUB)
・大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
b.checkAndEditLrgmidsmlForXxxxxxForm(大分類、中分類、小分類をチェックし、DBエレメントを作成する)
・大分類、中分類、小分類、それぞれが入力項目のとき、xxxxxxFormに分類名を設定するようにする
・大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
③XxxxxxForm.java
a.大分類、中分類、小分類、それぞれが入力項目のとき、分類名項目を追加する
④DbElementsServiceImpl.java
a.現在privateになっている大分類、中分類、小分類の分類名を返すメソッドをpublicに変更する
b.getDbEleAryLrgmidsmlYyyyyyyyにパラメータに(select項目のときtrue、入力項目の時false)を追加する
入力項目の時は、select項目作成用のDB読み見込みを行わないようにする。
c.現在自動作成されるgetDbEleAryLrgmidsmlYyyyyyyyは、大分類、中分類、小分類がすべてselect項目のとき使用できるようにしておく。
⑤DbElementsService.java
a.現在DbElementsServiceImpl.javaで、privateになっている大分類、中分類、小分類の分類名を返すメソッドをpublicに変更する
b.getDbEleAryLrgmidsmlYyyyyyyyにパラメータに(select項目のときtrue、入力項目の時false)を追加する
⑥XxxxxxServiceImpl.java
a.findByPkForXxxxxxForm(XX情報画面情報を取得する)
XxxxxxForm作成時に、大分類、中分類、小分類、それぞれが入力項目のとき、分類名を設定する
⑦kaz.js
a.以下関数(大分類、中分類、小分類のいずれかに入力項目(selectでない項目)があるときのチェンジ関数)を追加する
・createLrgOnlyChange2
「中分類がないかつ、入力項目(LrgName=null以外)大分類」のchange関数。
・createLrgChange2
大分類のchange関数
・createMidChange2
中分類のchange関数
・createSmlChange2
小分類のchange関数。
・getObjHTMLSubForLrg
大分類のObjectがあるTDを書き換える。(大分類が入力項目の時使用する)
・getObjHTMLSubForMid
中分類のObjectがあるTDを書き換える。(中分類が入力項目の時使用する)
・getObjHTMLSubForSml
小分類のObjectがあるTDを書き換える。(小分類が入力項目の時使用する)
・getObjHTMLSub
大分類、中分類、小分類のObjectがあるTDを書き換える。(分類が入力項目の時使用する)
⑧xxxxxxAmendRegister.html
a.大分類、中分類、小分類のいずれかに入力項目が含まれている場合のchange関数を
createLrgChange2、createMidChange2、createSmlChange2にする。
かつ入力項目時は、分類名を表示したり、入力エラー時にエラー表示にしたりする
◆XX情報一覧
①XxxxxxController.java
a.xxxxxxList(XX情報リスト検索条件表示処理)
・大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
b.xxxxxxListDo(XX情報リスト一覧表示処理)
・大分類、中分類、小分類、それぞれが入力項目のとき、xxxxxxSrchFormに分類名を設定するようにする
・大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
②XxxxxxSrchForm.java
a.大分類、中分類、小分類、それぞれが入力項目のとき、分類名項目を追加する
③xxxxxxList.html
a.大分類、中分類、小分類のいずれかに入力項目が含まれている場合のchange関数を
createLrgChange2、createMidChange2、createSmlChange2にする。
かつ入力項目時は、分類名を表示したり、入力エラー時にエラー表示にしたりする
◆XX情報一覧登録
①XxxxxxController.java
a.xxxxxxInsListSub(XX情報一括登録表示初期処理SUB)
大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
b.xxxxxxInsListAdd(XX情報一括登録行追加表示処理)
大分類、中分類、小分類のいずれかに入力項目が含まれている場合の
「dbElementsService.getDbEleAryLrgmidsmlYyyyyyyy」呼び出しに、パラメータ(select項目のときtrue)を追加する
②xxxxxxRegisterList.html
a.大分類、中分類、小分類のいずれかに入力項目が含まれている場合のchange関数を
createLrgChange2、createMidChange2、createSmlChange2にする。
かつ入力項目時は、分類名を表示したり、入力エラー時にエラー表示にしたりする