Xpages: можно ли создать сетку данных Dojo с сервисом Rest в отдельном XPage?

Я создал Xpage только с одним элементом, службой JSON Rest, которая указывает на представление (думаю, мне, вероятно, следует поместить это в CC).

Я хочу создать еще одну Xpage с CC, которая содержит CC, содержащую сетку данных Dojo, указывающую на эту оставшуюся службу.

Как я могу это сделать? Мне кажется, что я должен отделить свои обращения к данным от интерфейса. Я удивлен, что это не проще сделать.


person Bryan Schmiedeler    schedule 11.06.2014    source источник


Ответы (2)


Поместите службу REST в CC и включите ее в свой элемент управления Dojo Data Grid XPages/CC.

<xp:include
       id="restService"
       pageName="restServiceCC.xsp" />

Не забудьте добавить «.xsp» к имени вашего CC.

Обновить

Использование include — это (единственный) способ разделить элемент управления Dojo Data Grid и службу REST в отдельных XPages/CC, как вы указали в своем вопросе.

Поскольку службы REST могут быть отдельными элементами дизайна, вы можете определить все службы REST в базе данных шаблонов и позволить приложениям наследовать оттуда. Сами службы REST могут предоставлять данные из любой базы данных/представления.

Элемент управления Dojo Data Grid — это самый простой способ включить Data Grid в ваши приложения, но для этого требуется, чтобы служба REST находилась в самой базе данных.

В качестве альтернативы вы можете использовать «чистую» сетку данных на основе клиентского JavaScript. Сетки данных обычно получают свои данные из URL-адреса для Ajax. Это даст вам возможность поместить все службы REST в одну базу данных. При таком подходе у вас гораздо больше гибкости, чем при использовании элемента управления Dojo Data Grid. Но имейте в виду, что для этого нужно несколько дней. Я использую бесплатный jqGrid, основанный на jQuery, как «чистую» сетку данных. Дополнительную информацию об этом можно найти в моей презентации на EntwicklerCamp 2014 (извините, это на немецком - Google переводчик вам в помощь), включая сравнение с Dojo Data Grid и ExtJs Grid.

person Knut Herrmann    schedule 11.06.2014
comment
Кнут, это прекрасно. Мне очень нравится идея поместить все остальные сервисы в один шаблон и наследовать от него. Я просмотрел учебные пособия Брэда по сетке данных Dojo, ожидая, что появится категоризация, но ближе к концу он сказал, что вы должны использовать пользовательскую сетку данных Dojo. Я проверю вашу презентацию и файл jqGrid. Спасибо! - person Bryan Schmiedeler; 12.06.2014

Как упомянул Кнут, тег xp:include (элемент управления Include Page) кажется самым простым решением.

Однако вам не нужно перемещать службу REST в настраиваемый элемент управления. Вы можете просто включить страницу со службой REST на той же странице, которая содержит ваш настраиваемый элемент управления сеткой (или на самом настраиваемом элементе управления сеткой).

Затем в свойстве storeComponentId сетки элемента управления сетки можно указать идентификатор службы REST, и сервер сможет его разрешить.

person Brad Balassaitis    schedule 11.06.2014
comment
Это все хорошие предложения. Моя компания набирает обороты с Rest Services. Я думаю, что они великолепны, потому что у нас так много дублированных данных, и мы собираемся выполнить дедупликацию и использовать Rest Services для предоставления данных различным приложениям для их использования. Учитывая, что я задавался вопросом, не лучше ли разместить наши службы Rest в БД. Я считаю, что могу получить данные из представления в другой БД, но могу ли я использовать данные, если остальная служба находится в центральном репозитории. [Кстати, мне нравится ваш блог] - person Bryan Schmiedeler; 11.06.2014
comment
С любой чистой сеткой JavaScript на стороне клиента (включая сетку Dojo, не использующую элемент управления XPages Dojo Data Grid) вы можете получать данные из удаленного источника через URL-адрес, что позволит вам обращаться к службам REST в центральной базе данных. Однако я не знаю, как легко это сделать с помощью элемента управления Dojo Data Grid. Я только что провел несколько тестов, чтобы попытаться вычислить элемент управления Include Page для ссылки на страницу за пределами текущей базы данных, но мне это не удалось... - person Brad Balassaitis; 11.06.2014
comment
... Вместо использования свойства storeComponentId вы можете использовать свойство store элемента управления сеткой. Вы должны иметь возможность загружать удаленные данные в переменную JavaScript на стороне клиента и использовать ее для источника данных сетки. (Я не пробовал это с удаленными данными, но концептуально это то, для чего это нужно.) Вам нужно будет проверить, насколько хорошо он обрабатывает прокрутку и т. д. Возможно, вам придется сделать удаленный запрос для загрузки полного набора данных. - person Brad Balassaitis; 11.06.2014
comment
Брэд, большое спасибо. Мне придется переварить все, что вы с Кнутом сказали мне. Но, похоже, это путь. - person Bryan Schmiedeler; 12.06.2014