validateSelectedAction メソッドの実装
バリデータの実装でオーバーライドするように選択するメソッドの 1 つは、validateSelectedAction です。メソッド名が示すように、このメソッドは UI からユーザーが選択した操作を実行できるかどうかを知るために、クライアントアプリケーションによって呼び出されます。たとえば、ユーザーがドキュメントの操作のリストから「改訂」を選択したとします。「改訂」操作を続行する必要があるでしょうか。
validateSelectedAction のメソッド署名は次のようになります。
public UIValidationResult validateSelectedAction (String validationKey,
UIValidationCriteria validationCriteria, Locale locale)
このように、メソッドには引数が 3 つあります。
1. クライアントが検証を行う操作を識別するために使用したキーを示す文字列 (操作名と考えられます)。
2. UIValidationCriteria オブジェクト (これについてはすぐに説明します)。
3. ロケール。
第 1 および第 3 の引数の内容は一目瞭然です。UIValidationCriteria オブジェクトは、これまでに説明した検証基準ビーンです。クライアントが検証サービスに設定し渡したデータを保持します (ユーザー、コンテナ、コンテキストオブジェクトなど)。リターンタイプは UIValidationResult です。その属性には、操作を許可するかどうかを示すステータスが含まれています。
validateSelectedAction を実装する疑似コードは次のようになります。
import com.ptc.core.ui.validation.*;
…
public class MyValidator extends DefaultUIComponentValidator{
…
public UIValidationResult validateSelectedAction (String
a_key,
UIValidationCriteria a_criteria, Locale a_locale)
{
// get required info from UIValidationCriteria
WTContainerRef parentContainer =
a_criteria.getParentContainer();
WTReference contextObject = a_criteria.getContextObject();
WTPrincipalReference userRef = a_criteria.getUser();
// create status and message objects to pass back
UIValidationStatus status = null;
UIValidationFeedbackMsg msg = null;
// perform validation logic
…
if (この操作の続行を許可できる){
status = UIValidationStatus.PERMITTED;
}
else{
status = UIValidationStatus.DENIED;
msg = new UIValidationMsg(ローカライズしたテキスト,
UIValidationMsgType.INFO)
}
// return a validation result with the calculated status
and message
return new UIValidationResult(a_key, contextObject,
status, msg);
}
…
}