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); }
3.7.1.2.1. クライアント側のバリデーション¶
上述の Jssp Validator の設定、実装を行うとクライアント側のバリデーションも行えます。
クライアント側では UIデザインガイドライン( PC 版) の JSSP Validation と連携する場合 のような実装をすることで辞書の制約によるバリデーションが行われます。
sample.html (JSSP Validation と連携する場合 をまとめたもの)
<imart type="head">
<script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script>
<imart type="imuiValidationRule" rule="/sample/validation#init" rulesName="rules" messagesName="messages" />
</imart>
<div id="container" class="imui-form-container-wide">
<form id="myform" method="POST">
<input type="text" name="foo" />
<imart type="imuiButton" id="submit-button" value="送信" class="imui-small-button" />
</form>
</div>
<script>
$(function() {
imuiDisableOnSubmit('#myform');
$('#submit-button').click(function() {
if (imuiValidate('#myform', rules, messages)) {
imuiConfirm('メッセージ', '確認', function() {
imuiAjaxSend('#myform', 'POST', 'json');
});
}
});
});
</script>
注意
辞書のバリデーションはクライアントからサーバにリクエストを送信し、サーバ側でバリデーションを行い、その結果をクライアント側で表示するという仕組みで動作します。 また、項目ごとにリクエストが送信されます。大量の項目がある場合、リクエスト数が相当量になる可能性があります。 バリデーションの仕組みを十分理解した上でご利用ください。