いままで入力フォームに入力されたデータをデータベースに正しく格納出来ていなかった理由が判明した。
新規登録用のメソッド(InsertFormData)を呼び出すはずの所を更新用のメソッド(UpdateFormDate)を呼び出していたという理由だった。
更新用のメソッドは、データベースに既に格納されているデータを一旦取り出して、上書きした上で再び格納するという処理を行うため、まだ何もデータベースに格納されていない状態で呼び出すと、処理が止まってしまう。
これがデータベースにデータが格納されなかった理由であった。
このような分岐になっていた部分を修正しところ、正しくデータが格納されるようになった。
この処理を担当する部分は、JSONScreenファイルだった。
例として以下に、ToDoポートレットのJSONScreenファイル内のgetJSONStringメソッドを張る。
protected String getJSONString(RunData rundata, Context context) throws Exception { String result = new JSONArray().toString(); String mode = this.getMode(); try { if (ALEipConstants.MODE_INSERT.equals(mode)) { // ToDoFormData formData = new ToDoFormData(); formData.initField(); formData.loadCategoryList(rundata); if (formData.doInsert(this, rundata, context)) { } else { JSONArray json = JSONArray .fromObject(context.get(ALEipConstants.ERROR_MESSAGE_LIST)); result = json.toString(); } } else if (ALEipConstants.MODE_UPDATE.equals(mode)) { ToDoFormData formData = new ToDoFormData(); formData.initField(); formData.loadCategoryList(rundata); if (formData.doUpdate(this, rundata, context)) { } else { JSONArray json = JSONArray .fromObject(context.get(ALEipConstants.ERROR_MESSAGE_LIST)); result = json.toString(); } } else if (ALEipConstants.MODE_DELETE.equals(mode)) { ToDoFormData formData = new ToDoFormData(); formData.initField(); formData.loadCategoryList(rundata); if (formData.doDelete(this, rundata, context)) { } else { JSONArray json = JSONArray .fromObject(context.get(ALEipConstants.ERROR_MESSAGE_LIST)); result = json.toString(); } } else if ("multi_delete".equals(mode)) { ToDoMultiDelete delete = new ToDoMultiDelete(); if (delete.doMultiAction(this, rundata, context)) { } else { JSONArray json = JSONArray .fromObject(context.get(ALEipConstants.ERROR_MESSAGE_LIST)); result = json.toString(); } } else if ("multi_complete".equals(mode)) { ToDoMultiStateUpdate delete = new ToDoMultiStateUpdate(); if (delete.doMultiAction(this, rundata, context)) { } else { JSONArray json = JSONArray .fromObject(context.get(ALEipConstants.ERROR_MESSAGE_LIST)); result = json.toString(); } } } catch (Exception e) { logger.error("[ToDoFormJSONScreen]", e); } return result; }
modeがupdateとして扱われていたため、doUpdate()が行われ、正しくデータが格納されないようになってしまっていた。
データベース内に新しいテーブルを作成した場合をは、これらのことに気をつけたほうが良い。
これに気づくきっかけになったのは、dockerのall.logsファイルだったので、行き詰まってしまった方は、dockerのログを参照してみると良い。