2013-08-18 3 views
6

2つの選択肢のうち、最も効率的なコントロールの値にアクセスする必要がありますか?コントロールの値にアクセスする最も効率的な方法はどれですか?

getComponent("ControlName").getValue(); 

または

dataSource.getItemValue("FieldName"); 

私は機会にgetComponentは、現在の値を返すように見えるが、dataSourceへのアクセスは、より信頼性があると思わないことが判明。どのようなものが使用されているのか、パフォーマンスの観点からは大きな違いがありますか?

dataSource.getValueは私が試したあらゆるところで動作するようです。しかし、rowDataを使って作業する場合、私はまだrowData.getColumnValue( "Something")を行う必要があるようです。 rowData.getValue( "Something")が失敗します。

+0

コンポーネントとデータソースから取得する値の型にも違いがあります。 –

答えて

17

どちらもありません。最も速い構文はdataSource.getValue ("FieldName")です。 getItemValueメソッドは、ドキュメントデータソースでのみ信頼性がありますが、getValueメソッドは、ビューデータソースを介してアクセスされるビューエントリでも使用できるだけではありません(そのコンテキストでは、ビュー列のプログラム名必ずフィールドと同じ名前)、開発またはインストールする任意のカスタムデータソース(サードパーティの拡張ライブラリなど)でも利用できます。さらに、代わりにgetItemValueを使用した場合、自分で行う必要がある自動型変換も行います。でも、非常にシンプルなページ

、フレドリックは言及として、まずそれがにコンポーネントを見つけて、その値が何であるか、それを尋ねるために持っている、のでdataSource.getValue ("FieldName")は、早くgetComponent ("id").getValue()として5倍である...これは、背後とにかく、データソースを尋ねるだけです。だから、データソースを自分で尋ねるほうがいつもより速いでしょう。

:対応する書き込み方法はdataSource.setValue ("FieldName", "NewValue")で、dataSource.replaceItemValue ("FieldName", "NewValue")ではありません。両方とも動作しますが、setValuegetValueと同じ型変換を行います。したがって、古いDomino Java APIに厳密に準拠していないデータを渡すことができます。通常、値を順番に変換する必要があるDominoが保管するための「安全」であること。

+0

ありがとう、これは私がXPageを持っていることを知ることは本当に重要です。コードに戻って、私がこれを使用して変更した場所をすべて見つけてください。これは私が将来の参照とリマインダーのためにチートシート文書にコピーした投稿です。多くの場合、最も明白な方法は最良の方法から遠いです。 –

+0

ここに少しのフォローアップがあります。反復制御では、私はrowDataの値を表示します。これは、computedFieldをrowDataのフィールドにバインドしてバインドします。私は、rowData.getValueが速くなるだろうと推測していますか? –

+0

ああ - 開発のベストプラクティスは非常に貴重です。バッキング要素/事物の後には絶対に移動しないでください。 – stwissel

4

最も効率的な方法は、データソースから直接値を取得することです。 getComponent( "ControlName")。getValue();を使用すると、最初にコンポーネントを取得し、次にgetValueを取得します。あなたが私に尋ねるならば、データソースからの単一の取得はより効率的です。

関連する問題