validateSelectedMultiSelectAction メソッドの実装
バリデータの実装でオーバーライドできるもう 1 つのメソッドは validateSelectedMultiSelectAction です。これは validateSelectedAction メソッドと似ています。唯一の相違点は、このメソッドが複数選択操作を検証するために呼び出され、複数の結果を返す点です。たとえば、ユーザーがテーブルヘッダーから「チェックアウト」を選択し、テーブルで複数の選択された部品のチェックアウトを実行するとします。すべての部品のチェックアウトを許可する必要があるでしょうか。
validateSelectedMultiSelectAction のメソッド署名は次のようになります。
public UIValidationResultSet validateSelectedAction (String
validationKey, UIValidationCriteria validationCriteria, Locale
locale)
引数は validateSelectedAction に渡されたものと同じです。唯一の相違点は、このメソッドがタイプ UIValidationResultSet のオブジェクトを返す点です。これは名前からわかるとおり、UIValidationResult オブジェクトのセットです。
validateSelectedMultiSelectAction の疑似コードは次のようになります。
import com.ptc.core.ui.validation.*;
…
public class MyValidator extends DefaultUIComponentValidator{
…
public UIValidationResultSet validateSelectedMultiSelectAction
(String
a_key, UIValidationCriteria a_criteria, Locale a_locale){
// get required info from UIValidationCriteria
WTContainerRef parentContainer = a_criteria.getParentContainer();
WTCollection targetObjects = a_criteria.getTargetObjects();
WTPrincipalReference userRef = a_criteria.getUser();
// create result set to return
UIValidationResultSet resultSet = new UIValidationResultSet();
// iterate through target objects
Iterator targetRefIterator = targetObjects.referenceIterator();
while (targetRefIterator.hasNext()){
WTReference targetRef =
(WTReference)targetRefIterator.next();
if (このオブジェクトについてこのアクションの続行を許可できる){
resultSet.addResult(new UIValidationResult(a_key,
targetRef,
UIValidationStatus.PERMITTED, null));
}
else{
resultSet.addResult(new UIValidationResult(a_key,
targetRef,
UIValidationStatus.DENIED, new
UIValidationMsg
(ローカライズしたテキスト,
UIValidationMsgType.INFO)));
}
}
// return the result set
return resultSet
}
}