フォームで使用するビュー・オブジェクト属性のリストを指定すると、カスタムJClientアプリケーションとリモートにデプロイされたビジネス・コンポーネントの起動時間を短縮できる場合があります。デフォルトでは、JClientのウィザードにより、fetchAttributeProperties()
がフォームで使用する属性のみのリストとともに、JClientフォームのブートストラップ・コードに追加されます。このメソッドをコールしない場合、JClientフォームは1回のネットワーク・ラウンドトリップで、そのアプリケーション・モジュールに定義されているビュー・オブジェクトの全属性に対するコントロール・ヒント・プロパティ(属性フォーマットおよびラベルなど)を、リモート・クライアント・オブジェクトにフェッチします。
ウィザードを使用せずにJClientフォームを作成する場合、特にJClientフォームのバインドされたビュー・オブジェクトの一部の属性しか使用しない場合は、ユーザーがfetchAttributeProperties()
をブートストラップ・コードに追加する必要があります。このメソッドを使用すると、フォームのレイアウトに必要な情報のみがフェッチされ、不要な属性は無視されます。
注意: ローカル・モード・デプロイ(クライアントとビジネス・コンポーネントが同一のVMに存在する場合)では、属性プロパティのフェッチはサポートされていません。
属性プロパティを取得するためのネットワーク・コールを最小限に抑えるには、次のようにします。
fetchAttributeProperties()
をコールし、次のように設定します。
このメソッドは、ビュー・オブジェクト名のリストと、各ビュー・オブジェクトの属性名のリストを引数としてとります。リストには属性のすべてまたは一部を含めることができます。フォームでビュー・オブジェクトのすべての属性が必要とされる場合は、属性の引数としてnull
を指定します。この場合、ビュー・オブジェクトのすべての属性がフォームで使用されるため、起動時間はそれほど短縮されません。
注意: JClientのウィザードを使用してフォームを生成すると、fetchAttributeProperties()
メソッドが追加されます。
JClientブートストラップ・コード内で、JUApplicationオブジェクトの作成直後にfetchAttributeProperties()
をコールします。次の例では、最初のビュー・オブジェクトの3つの属性と2番目のビュー・オブジェクトの5つの属性に対するカスタム・プロパティがダウンロードされます。
// bootstrap application
JUMetaObjectManager.setBaseErrorHandler(new JUErrorHandlerDlg());
JUApplication app =
JUMetaObjectManager.createApplicationObject("MyProject.MyAppModule", null,
new JUEnvInfoProvider());
JUPanelBinding panelBinding = new JUPanelBinding("MyProject.MyAppModule",
topPanel);
app.getApplicationModule().fetchAttributeProperties(new String[]
{"VO1", "VO2"}, new String[][]
{
{"VO1Attr1", "VO1Attr2", "VO1Attr3"},
{"VO2Attr1", "VO2Attr2", "VO2Attr3", "VO2Attr4", "VO2Attr5"}
}, null);
panelBinding.setApplication(app);
topPanel.setPanelBinding(panelBinding);
panelBinding.execute();
...
fetchAttributeProperties()
をコールすることで、フォームが作成されるたびにビジネス・コンポーネント属性定義に対してgetFormat()
やgetLabel()
などのプロパティ・メソッドがコールされないようにします。