Aipoではデータ登録・更新の際にvalidatorメソッドを通ります。
/** * データを新規登録します。 * * @param action * @param rundata * @param context * @return TRUE 成功 FALSE 失敗 */ public boolean doInsert(ALAction action, RunData rundata, Context context) { try { if (!doCheckSecurity(rundata, context)) { return false; } init(action, rundata, context); doCheckAclPermission( rundata, context, ALAccessControlConstants.VALUE_ACL_INSERT); action.setMode(ALEipConstants.MODE_INSERT); mode = action.getMode(); rundata.getParameters().add( ALEipConstants.MODE, ALEipConstants.MODE_INSERT); List<String> msgList = new ArrayList<String>(); setValidator(); boolean res = false; if (isOverQuota()) { msgList.add(ALLocalizationUtils .getl10n("COMMON_FULL_DISK_DELETE_DETA_OR_CHANGE_PLAN")); } else { res = (setFormData(rundata, context, msgList) && validate(msgList) && insertFormData( rundata, context, msgList)); }
しかし削除時にはvalidatorを通りません。
/** * データを削除します。 * * @param action * @param rundata * @param context * @return TRUE 成功 FALSE 失敗 */ public boolean doDelete(ALAction action, RunData rundata, Context context) { try { if (!doCheckSecurity(rundata, context)) { return false; } init(action, rundata, context); doCheckAclPermission( rundata, context, ALAccessControlConstants.VALUE_ACL_DELETE); action.setMode(ALEipConstants.MODE_DELETE); mode = action.getMode(); rundata.getParameters().add( ALEipConstants.MODE, ALEipConstants.MODE_DELETE); List<String> msgList = new ArrayList<String>(); boolean res = deleteFormData(rundata, context, msgList); action.setResultData(this);
削除時にデータをバリデートしたい場合は
/** * ToDoカテゴリを削除します。 <BR> * * @param rundata * @param context * @param msgList * @return */ @Override protected boolean deleteFormData(RunData rundata, Context context, List<String> msgList) { try { // オブジェクトモデルを取得 EipTTodoCategory category = ToDoUtils.getEipTTodoCategory(rundata, context); if (category == null) { return false; } if (category.getEipTTodoArray().size() > 0) { msgList.add("1つ以上のToDoを含むカテゴリを削除することはできません。"); return false; }
のようにします。