ADF Webページでの検証を使用した作業

ユーザーが、ADF値バインディングを使用する入力フィールドの値を指定したときに、ADF対応Webページで検証を実行できます。UIコンポーネント用のバインディング・オブジェクトを使用して、次のレベルのエラー処理を行うことができます。

詳細は、次のセクションを参照してください。

入力フォームを使用する際の行の現在位置の検証

データ・コントロール・パレットを使用し、データ・コレクションを入力フォームとして使用する方法でWebページを作成する場合、そのフォームに対して行の現在位置の検証を適用するかどうか指定できます。デフォルトでは、そのページに対するバインディング定義ファイル(UIModel.xml)が作成され、検証トークンが有効になります。次のような非表示の入力フィールドを介して、そのページは自らの行の状態を、バインディング・コレクションに対応するイテレータに通知します。

<input type="hidden" name="<c:out value='${bindings.statetokenid}'/>" value="<c:out value='${bindings.statetoken}'/>"/>

注意: 生成された入力フォームからこの行を削除しないでください。検証を無効にする場合、次に説明するように、 EnableTokenValidationプロパティをFalseに設定します。

ユーザーがフォームに加えた変更結果の送信を試みた場合、更新を完了する前に、検証トークンにより、イテレータが現在の行と編集中の行を比較することが許可されます。イテレータの現在の行が、ユーザーが編集した後の行と一致していない場合、次のような検証エラーがWebページの上端に表示されます。

Failed to validate a row with key...

この検証エラーにより、そのページは有効な編集を行える状態ではないというフィードバックがユーザーに伝達され、ユーザーが誤ったオブジェクトを意図しない方法で変更してしまうことを防止できます。

実使用時に、特定の状況では行の現在位置が変化することがあります。入力フォームを表示しながら、ユーザーがコレクションを参照する(たとえば、「Next Set」と「Previous Set」を起動する)場合がこれに該当します。この例では、コレクションを参照するアクションにより、イテレータの現在行はリセットされます。そして、検証トークンにより、ユーザーが誤った行を変更することが防止されます。

このような状態がアプリケーションで発生しないことを確信している場合や、行の非一貫性が検出されたときに検証エラーを表示することを望まない場合は、検証トークンを無効にできます。

行の現在位置の検証を無効にするには、次のようにします。

  1. ビジュアル・エディタでドキュメントが開いている状態で、「表示」->「構造」を選択し、構造ウィンドウを開きます。

  2. 構造ウィンドウのツールバーでUI Model tab iconUIモデル)をクリックし、階層のルート・ノードを選択して、バインディング定義ファイルの編集可能プロパティを表示します。

  3. プロパティ・インスペクタで、「Enable Token Validation」を右クリックし、「False」を選択します。バインディング定義ファイルのEnableTokenValidation属性が更新されます。

ADFバインディング・プロパティを使用した入力フォーム・エントリの検証

次のようなJSTL式で属性バインディングのerrorプロパティを使用する形でビジネス・サービスにより定義された属性値検証を、Webページで使用できます。

${bindings.attributeBindingName.error}

注意: 属性検証エラーは、属性バインディングのレベルで設定されます。他のすべてのエラーはバインディング・コンテナ内でキャッシュされ、${bindings.error}を使用することで取得できます。

たとえば、次のような条件付コード(フィールドの背景色を変更します)を使用して、フォームからエラーが伝達されるように設定できます。


<c:choose>
      <c:when test="${not empty bindings.Sal.error}">
         <html:text property="Sal" style="background-color:red"></html:text>
      </c:when>
      <c:otherwise>
         <html:text property="Sal"></html:text>
      </c:otherwise>
   </c:choose>    

かわりに、次に説明するようにexceptionListプロパティを使用して、バインディングから返された例外オブジェクトの作業をすることもできます。

ADF例外オブジェクトでのエラー・メッセージの走査

Webページで、次のようなJSTLタグを使用して、ADFバインディング例外オブジェクトの作業をすることもできます。

<c:out value="${exception.message}"/>

例外オブジェクトで、ネストされた例外を使用することも可能です。この場合、外部ループを例外リスト用、内部ループを現在の例外に関する詳細用として使用します。次のスクリプトは再帰的ではありませんが、最初の2つのレベルを処理します。


<c:forEach var="exception" items="${bindings.exceptionsList}">
        <c:out value="${exception.message}"/>
        <p>
        <c:forEach var="e1" items="${exception.details}">
               <c:out value="${e1.message}"/>
               <p>
               <c:forEach var="e2" items="${e1.details}">
                  <c:out value="${e2.message}"/>
               </c:forEach>
               </p>
        </c:forEach>
   </c:forEach>     

かわりに、前述のようにerrorプロパティを使用して、バインディングから返された属性検証エラーをテストすることもできます。


データ・バインディングの詳細は、次のトピックを参照してください。

Oracle ADFのバインディングについて
ADFバインディングのプロパティについて

Oracle ADFのデータ・バインディングの機能の詳細は、次のトピックを参照してください。

Oracle ADFデータ・コントロールについて

 

Copyright © 1997, 2004, Oracle. All rights reserved.