xPages でデータ コンテキストを使用したことがないので、その利点を知りたいのですが、
メモリに何かを返したい場合は、メモリにも格納されていると思われる SSJS スクリプト ライブラリで関数を呼び出すことがよくあります。
たとえば、ssjs に notesdocument を返す関数があるとします。この関数は、xpage のいくつかの場所から呼び出される可能性があります。この場合、ssjs スクリプト ライブラリに関数を持つことに関して、データ コンテキストは有益でしょうか。
xPages でデータ コンテキストを使用したことがないので、その利点を知りたいのですが、
メモリに何かを返したい場合は、メモリにも格納されていると思われる SSJS スクリプト ライブラリで関数を呼び出すことがよくあります。
たとえば、ssjs に notesdocument を返す関数があるとします。この関数は、xpage のいくつかの場所から呼び出される可能性があります。この場合、ssjs スクリプト ライブラリに関数を持つことに関して、データ コンテキストは有益でしょうか。
dataContext は、グローバル変数と考えることができます。SSJS 関数に対する利点は次のとおりです。
1) dataContext は SSJS / Java を実行し、何でも値を返します。dataContext への参照は、データソースと同じように EL (例: #{myVar}) を使用します。だから私の理解では、毎回SSJS/Javaコードを実行するのではなく、ELが価値を得るということです。したがって、そこにはパフォーマンス上の利点があります。
2) dataContext の値は、動的に、またはページの読み込み時に計算できます。したがって、関数を毎回実行するのではなく、${javascript:@Today()} を使用して 1 回実行することができます。
dataContext への参照は EL を使用するため、パフォーマンス上の利点もあると思います。したがって、参照のどの時点でも SSJS を実行しないため、SSJS パーサーを経由する必要はありません。
dataContext の追加の利点は、データソースが可能な任意のレベル (XPage、Custom Control、または Panel) にスコープを設定できることです。これにより、viewScope よりも有利になります。したがって、繰り返しコントロールのパネルに dataContext を設定して、NotesDocument のフィールドまたはフィールドの連結への複数の参照を回避することもできます。
私は、Domino オブジェクトを dataContext に格納することを避ける傾向がありました。これは主に、リサイクルに固有のリスクがあるためです。問題があるかどうかはわかりません。
@Withers: #{MyVar} dblookup で DataContext 変数 #{DataStoreDbName} を使用したときに機能しないことがわかりました: (ただし、ウィザース氏の投稿は非常に価値があると思います)
これらは機能しませんでした:
#{DataStoreDbName}
@Sum(@DbLookup("#{DataStoreDbName}","personnelbudget",compositeData.catid,10))
#{id:DataStoreDbName}
@Sum(@DbLookup("#{id:DataStoreDbName}","personnelbudget",compositeData.catid,10))
これはうまくいきました
DataContext が入力されたコントロールの [プロパティ] タブの [データ] セクションにある DataSources のリストに dataContext var が表示される方法が気に入っています。
DataContext の定義から始めます: var = DataStoreDbName
このデータ コンテキスト変数は、@DbLookup で使用している Server:DB の外部データベースです。
「DataStoreDbName」変数名が、データ セクションの下のデータ ソースに表示されるようになりました。
これは、私が DataContext を使用している DbLookup です: @Sum(@DbLookup( DataStoreDbName ,"personnelbudget",compositeData.catid,10))
<xp:text> は DataContext 変数の値を表示するだけですが、<xp:inputHidden> は customCoverter で DataContext 変数の値を使用して、送信/保存時に値を保存/保持します。