Библиотека расширений XPages и использование источника данных объекта

В библиотеку расширений (по умолчанию в Domino 9) включена функция "Источник данных объекта". Это очень удобная вещь, но я не могу найти никакой документации по этому поводу. У меня вопрос по свойству 'ignoreRequestParams'... что это значит и как это можно использовать? Включив это, можно ли автоматически привязать параметры URL к свойствам объекта источника данных?


person David Marko    schedule 07.03.2013    source источник
comment
Вам может понадобиться прочитать исходный код   -  person stwissel    schedule 08.03.2013


Ответы (1)


Исходные два источника данных (Domino Document и Domino View) поддерживают поведение, которое позволяет параметрам строки запроса URL переопределять значения свойств. По умолчанию источник данных Document, например, ищет databaseName, formName и documentId в строке запроса; для любого из них соответствующее свойство устанавливается равным значению параметра, независимо от того, какое значение этому свойству могло быть присвоено в разметке XSP.

Это поведение можно настроить двумя способами:

  1. Если свойству requestParamPrefix присвоено непустое строковое значение, то каждое свойство будет переопределено только в том случае, если URL-адрес содержит соответствующий параметр, соответствующий указанному префиксу плюс имени свойства, например. blog_documentId, comment_formName. Значения, предоставленные через параметры по умолчанию (без соответствующего префикса), будут игнорироваться.
  2. Если значение свойства ignoreRequestParams равно true, никакие свойства источника данных не будут переопределены URL-адресом независимо от значений параметров строки запроса. Значение этого свойства по умолчанию равно false, поэтому вы должны установить его в значение true для конкретного экземпляра источника данных, если хотите гарантировать, что URL-адрес никогда не повлияет на значения свойств для тот экземпляр.

Однако ни одно из этих действий еще не было реализовано для источника данных объекта. В результате любые значения, заданные для свойств ignoreRequestParams или requestParamPrefix, не повлияют на поведение любого экземпляра источника данных этого типа.

Возможно, причина, по которой он не был реализован, заключается в том, что источник данных объекта является полностью произвольным, поэтому нет предопределенного предположения, что любой его экземпляр будет поддерживать определенные свойства. Вы определяете в свойстве createObject экземпляра источника данных «привязку метода» (функция SSJS или метод Java), которая составляет бизнес-логику для создания объекта данных. Таким образом, результирующий объект может быть чем угодно, он может поддерживать любые свойства, которые вы хотите, и логика, которая определяет начальные значения для этих свойств, может быть любой, какой вы хотите. Таким образом, вы, безусловно, можете ссылаться на встроенную глобальную переменную param в этой привязке метода, чтобы учитывать любые параметры URL, которые вы хотите, при определении начального состояния источника данных.

Например, следующая привязка метода для свойства createObject экземпляра Object Data Source будет вполне допустимой:

return {
    firstName: (param.get("firstName") || ""),
    lastName: (param.get("lastName") || ""),
    email: (param.get("email") || "")
};

Это привело бы к объекту, к которому вы могли бы привязать компоненты данных... например, если ваш var для источника данных был "регистрация":

#{registration.firstName}

Каждое свойство объекта будет иметь значение по умолчанию, если URL-адрес содержит параметр, соответствующий имени свойства.

Естественно, ваша логика может быть намного сложнее: использование параметров представления и ключа (вместо идентификатора документа) для извлечения документа и загрузки значений поля, запрос данных, отличных от Domino, на основе внешнего ключа, указанного в URL-адресе. .с этим типом источника данных предела нет, потому что ничего не определено заранее.

person Tim Tripcony    schedule 08.03.2013