基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > UI の情報の表示 > UI の検証 > 手順 - 選択後検証
  
手順 - 選択後検証
幸いなことに、選択後検証の実装は事前検証よりもはるかに単純です。選択後検証を実装できるのは、バリデータ内の 1 箇所だけです。また、選択後検証は操作にのみ適用されることも重要です。属性やその他の UI コンポーネントには、選択後検証の概念はありません。
バリデータの作成
選択後検証のバリデータの作成方法は、事前検証の場合とまったく同じです。詳細については、手順 - 事前検証を参照してください。
選択後検証メソッドの実装
バリデータに実装できる選択後検証のメソッドには、単一選択操作用と複数選択操作用の 2 つのメソッドがあります。それぞれ、validateSelectedAction() および validateSelectedMultiSelectAction() というメソッド名です。複数選択操作となる可能性のない操作の検証を追加する場合は、validateSelectedAction() メソッドのみを実装します。複数選択操作となる可能性のある操作の場合は、validateSelectedAction() メソッドと validateSelectedMultiSelectAction() メソッドの両方を実装する必要があります。
2 つのメソッドを実質的に区別しているのは、メソッド署名だけです。validateSelectedMultiSelectAction() が UIValidationResultSet を返すのに対して、validateSelectedAction() は単一の結果を返します。
public class MyValidator extends DefaultUIComponentValidator{
@Override
public UIValidationResultSet performFullPreValidation()
(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale
locale) throws WTException {
UIValidationResultSet resultSet =
UIValidationResult.newInstance);
// perform your business logic here
// if you want to enable the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey
UIValidationStatus.ENABLED));
// if you want to disable the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey,
UIValidationStatus.DISABLED));
// if you want to hide the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey
UIValidationStatus.HIDDEN));
return resultSet;
}
@Override
public UIValidationResultSet validateSelectedMultiSelectAction
() (UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale
locale) throws WTException {
UIValidationResultSet resultSet =
UIValidationResultSet.newInstance();
// perform your business logic here
// if you want to execute the action, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
//
UIValidationStatus.PERMITTED));
// // if you want to abort the action, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
// UIValidationStatus.DENIED));
// if you want to prompt the user for confirmation, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
//
UIValidationStatus. PROMPT_FOR_CONFIRMATION));
return resultSet;
}
}
UIValidationStatus.PROMPT_FOR_CONFIRMATION の処理方法
バリデータが PROMPT_FOR_CONFIRMATION ステータスを返した場合、PTC.validation.AJAXPostSelectValidation JavaScript 関数を使用して特別に設定する必要があります。
<action name="myAction" >
<command class="com.ptc.xxx" method="function" onClick="
PTC.validation.AJAXPostSelectValidation(event, validationKey)"/>
</action>
この場合、選択を行ってから myAction をクリックすると、次の処理が行われます。
指定された validationKey に基づいた PTC.validation.AJAXPostSelectValidation 関数が、マッピングされたバリデータに対して選択後関数を実行します。
ステータスが PROMPT_FOR_CONFIRMATION の場合、確認のポップアップが表示され、選択に従って処理が進みます。
確認で "はい" を選択するかステータスが PERMITTED の場合、その操作を実行するための別のリクエストがサーバーに送信されます。インテリジェンスが内蔵されているため、このリクエストでバリデータを再度呼び出すことはありません。