基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > UI の情報の表示 > UI の検証 > ソリューション > その他のヒント、コツ、避けるべきこと > WTReferences をインフレートしないこと
  
WTReferences をインフレートしないこと
以下のようなバリデーションコードを書きたくなるかもしれませんが、これは行わないでください。
@Override
public UIValidationResultSet performFullPreValidation
(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale locale)
throws WTException
{
Persistable contextObject =
validationCriteria.getContextObject().getObject();
WTContainer container =
validationCriteria.getParentContainer().getReferencedContainer();
if (!contextObject instanceof WTPart){
...
}
if (!container instanceof PDMLinkProduct){
...
}
}
前述のコードは UIValidationCriteria にある WTReferencesPersistables にインフレートするという比較的コストの高い操作を実行しています。このようなオブジェクトのインフレートが避けられないケースもないとは言えませんが、ほとんどは避けられます。コンテキストオブジェクトまたは親コンテナが、あるクラスのインスタンスかどうかを確認したいだけの場合は、次のように isAssignableFrom() メソッドを使用します。
@Override
public UIValidationResultSet performFullPreValidation
(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale locale)
throws WTException
{
WTReference contextObjectRef =
validationCriteria.getContextObject();
WTContainerRef containerRef =
validationCriteria.getParentContainer();
if
(!WTPart.class.isAssignableFrom(contextObjectRef.getReferencedClas
s())){
...
}
if (!PDMLinkProduct.class.isAssignableFrom(containerRef.getReferenced
Class())){
...
}
}