拡張ライブラリ (Domino 9 のデフォルト) には、「オブジェクト データ ソース」機能が含まれています。非常に便利なことですが、これに関するドキュメントは見つかりません。「ignoreRequestParams」プロパティについて質問があります...それは何を意味し、どのように使用できますか? これを有効にすることで、URL パラメーターをデータソース オブジェクトのプロパティに自動的にバインドできますか?
1 に答える
元の 2 つのデータ ソース (ドミノ ドキュメントとドミノ ビュー) は両方とも、URL クエリ文字列パラメーターがプロパティ値を上書きできるようにする動作をサポートしています。既定では、ドキュメント データ ソースは、たとえば、クエリ文字列でdatabaseName
、formName
、およびを検索します。documentId
これらのいずれかが見つかった場合、XSP マークアップでそのプロパティに割り当てられた値に関係なく、対応するプロパティがパラメータ値に設定されます。
この動作は、次の 2 つの方法でカスタマイズできます。
- プロパティに
requestParamPrefix
空でない文字列値が指定されている場合、URL に、指定された接頭辞とプロパティ名 (例blog_documentId
:comment_formName
. デフォルト パラメーター (一致するプレフィックスなし)を介して提供される値は無視されます。 - プロパティが true と評価された場合
ignoreRequestParams
、クエリ文字列パラメーターの値に関係なく、データ ソースのプロパティは URL によってオーバーライドされません。このプロパティのデフォルト値は false であるため、URL が特定のデータ ソース インスタンスのプロパティ値に影響を与えないようにする場合は、特定のデータ ソース インスタンスで true に設定する必要があります。
ただし、この動作はオブジェクト データ ソースにはまだ実装されていません。その結果、ignoreRequestParams
またはrequestParamPrefix
プロパティに設定された値は、このタイプのデータ ソースのインスタンスの動作には影響しません。
おそらく実装されていない理由は、オブジェクト データ ソースが完全に任意であり、そのインスタンスが特定のプロパティをサポートするという事前定義された仮定がないためです。データ ソース インスタンスのcreateObject
プロパティで、データ オブジェクトを作成するためのビジネス ロジックを構成する "メソッド バインディング" (SSJS 関数または Java メソッド) を定義します。したがって、結果として得られるオブジェクトは任意のものにすることができ、任意のプロパティをサポートすることができ、それらのプロパティの初期値を決定するロジックは任意のものにすることができます。param
そのため、データ ソースの初期状態を定義するときに必要な URL パラメーターを考慮に入れるために、そのメソッド バインディング内の組み込みグローバル変数を自由に参照できます。
たとえば、次のメソッド バインディングは、createObject
オブジェクト データ ソースのインスタンスのプロパティに対して完全に有効です。
return {
firstName: (param.get("firstName") || ""),
lastName: (param.get("lastName") || ""),
email: (param.get("email") || "")
};
これにより、データコンポーネントをバインドできるオブジェクトが生成されます...たとえば、var
データソースが「登録」の場合:
#{registration.firstName}
URL にプロパティ名と一致するパラメータが含まれている場合、オブジェクトの各プロパティにはデフォルト値があります。
当然のことながら、ロジックはこれよりもはるかに複雑になる可能性があります。(ドキュメント ID の代わりに) ビューとキー パラメータを使用してドキュメントを取得し、フィールド値をロードし、URL で識別された外部キーに基づいて Domino 以外のデータをクエリします。 . このタイプのデータ ソースでは、事前に何も定義されていないという理由だけで限界があります。