intra-mart Accel Platform IM-Repository拡張プログラミングガイド 第6版 2024-04-01

3.7. バリデーション

3.7.1. バリデーションを利用する

制約用途に指定した制約に適合するかどうかを確認する の設定を行っている場合、次のような実装を行うことでリクエストの パラメータに対してバリデーションを行うことができます。

3.7.1.1. JavaEE開発モデル

JSR 303 Bean Validationに準拠したカスタムバリデーションとして、辞書項目の制約に基づいたものを提供します。
@Dictionary(id=”xxx”) アノテーションを付与することにより、辞書項目に定義されている制約を適用できます。
この例では SampleForm の foo に対して 0 から 100 までの範囲内であるという制約が適用されます。
package sample;

import jp.co.intra_mart.foundation.repository.metadata.dictionary.validator.Dictionary;

public class SampleForm {
    // 辞書項目IDをアノテーションに指定する
    // id = 辞書項目IDまたはエイリアスID、name = 項目名
    @Dictionary(id = "sample-dictionary-item", name = "foo")
    private Long foo;
}

3.7.1.2. スクリプト開発モデル

Jssp Validator のカスタムバリデーションとして、辞書項目の制約に基づいたものを提供します。
バリデーションルールのキーに dictionary を、値に辞書項目IDを指定することにより、辞書項目に定義されている制約を適用できます。
この例ではリクエストパラメータの foo に対して 0 から 100 までの範囲内であるという制約が適用されます。

validation.js

var init = {
  'foo': { // リクエストパラメータ名
       caption: "CAP.Z.EXAMPLE.NAME", // エラーメッセージのキャプション
       dictionary: 'sample-dictionary-item'
   }
}

sample.js

let foo;
/**
 * @validate validation#init
 * @onerror handleError
 */
function init(request) {
  foo = request.foo;
}

function handleError(request, validationErrors) {
  var param = {
    errors: validationErrors.getMessages()
  };
  forward("error", param);
}