R
romych2004
Начну с мини описания, далее как-то это все постараюсь структурировать и дополнять и не бросать. Прошу меня поправлять, если я где-то буду не прав. Так же прошу отправлять свои материалы, если таковые имеются
Итак, XPages - это технология разработки веб приложений от IBM на основе сервера Domino. XPages базируется на основе JSF. По умолчанию использует клиентский фреймворк dojo(обновляется с обновлением сервера/extention library). Но с некой версии появилась тема Bootstrap.
Ряд энтузиастов написал дополнения для пейджей Extention Library, эти дополнения вошли в стандартные релизы сервера. Разработка ведется в Domino Designer, но вроде как есть плагин для Eclipse
Итак, XPages - это технология разработки веб приложений от IBM на основе сервера Domino. XPages базируется на основе JSF. По умолчанию использует клиентский фреймворк dojo(обновляется с обновлением сервера/extention library). Но с некой версии появилась тема Bootstrap.
Ряд энтузиастов написал дополнения для пейджей Extention Library, эти дополнения вошли в стандартные релизы сервера. Разработка ведется в Domino Designer, но вроде как есть плагин для Eclipse
XSP, пейджи - XPages, xpages-страницы
csjs - client-side javascript - скрипт, который выполняется на клиенте
ssjs - server-side javascript - скрипт, который выполняется на сервере
JSF - JavaServer Faces
EL - expression language - язык, использующийся в JSF
CC - Cusom Control
csjs - client-side javascript - скрипт, который выполняется на клиенте
ssjs - server-side javascript - скрипт, который выполняется на сервере
JSF - JavaServer Faces
EL - expression language - язык, использующийся в JSF
CC - Cusom Control
Чтобы не было путаницы - открываем перспективу: Window -> Open perspective -> XPages
Где ведется разработка:
В XSP используются как стандартные html-теги, так и пейджевые. XSP теги, как правило, имеют префиксы xp(стандартные контролы ), xe(контролы из Extention Library), xc(Custom controls). Например:
Где ведется разработка:
- Вкладка XPages - разработка непосредственно страниц, в вебе запускаться будет именно страница из этой вкладки
- Вкладка Custom controls - тоже самое что XPages, только с возможностью переиспользования и без возможности самостоятельного запуска(лотусовые подформы)
- Вкладка Script Libraries - LS, csjs, ssjs библиотеки
- Вкладка Code -> Java - классы для работы в XPages(только в XPages)
- Вкладка Application configuration -> Xsp Properties - свойства XSP для текущей базы
- Вкладка Application configuration -> Faces-config - java-bean конфигурации
- Так же есть папка WebContent, но о ней позже
В XSP используются как стандартные html-теги, так и пейджевые. XSP теги, как правило, имеют префиксы xp(стандартные контролы ), xe(контролы из Extention Library), xc(Custom controls). Например:
XML:
<xp:panel></xp:panel>
Если необходимо получить клиентский ID, то в дизайнере необходимо использоваться конструкцию #{id:XXX}, где XXX - id элемента. Данная конструкция автоматически строит динамический ID для елемента, в зависимости от контекста. Допустим, у нас может быть два CC, в обоих CC есть <xp:inputText id="text"></xp:inputText>.
В браузере ID будет выглядеть подобным образом:
Для получения этого элемента на клиенте надо будет использовать #{id:text}. Например, получение значения
ВАЖНО! id вычисляется из контекста, т.о. в csjs библиотеке нельзя писать конструкцию #{id:XXX}, т.к. неизвестно к какому именно контексту относится данный элемент. Вместо этого ID можно передавать как параметр из XPages или Custom Control
В серверной части достаточно вызвать getComponent("text"). Контекст определится автоматически вне зависимости от того, где вызываем функцию, в библиотеке или в CC
В браузере ID будет выглядеть подобным образом:
Код:
view:_id1:myCustomControl1:text
view:_id1:myCustomControl2:text
Для получения этого элемента на клиенте надо будет использовать #{id:text}. Например, получение значения
JavaScript:
alert(dojo.byId("#{id:text}").value);
В серверной части достаточно вызвать getComponent("text"). Контекст определится автоматически вне зависимости от того, где вызываем функцию, в библиотеке или в CC
Функции предназначены для обновления части страницы. Функции *Get и *Post аналогичны, обе функции обновляют часть страницы на клиенте. Разница в том, что POST отправляет данные с клиента на сервер, и, соответственно, обновляет данные на сервере.
Синтаксис:
где
p.s. необходимо убрать единицы из названий свойств. Форумский движок не пропустил данные названия.
Во время выполнения одного из partial refresh второй выполнить нельзя. Чтобы можно было выполнить два сразу - необходимо вызвать перед вторым рефрешем
Но делать этого не советуют.
Правильная конструкция для вызова нескольких рефрешей:
Синтаксис:
JavaScript:
XSP.partialRefreshGet(id, params)
id - javascript id елемента, который нужно обновить
params - необязательный параметр, js-объект. Параметры для обновления.
params - необязательный параметр, js-объект. Параметры для обновления.
JavaScript:
XSP.partialRefreshGet(id, {
params: {
"$$xspsubmitvalue": "значение", // на сервере значение можно будет получить с помощью context.getSubmittedValue();
"моя переменная": значение // на сервере значение можно будет получить с помощью param["моя переменная"]
},
onStart1: function() { doSomething; }, // js функция, выполняемая перед отправкой GET запроса
onComplete1: function() { doSomething; }, // js функция, выполняемая в случае удачной отправки запроса и получения ответа
onError1: function() { doSomething; } // js функция, выполняемая при ошибке
});
Во время выполнения одного из partial refresh второй выполнить нельзя. Чтобы можно было выполнить два сразу - необходимо вызвать перед вторым рефрешем
JavaScript:
XSP.allowSubmit();
Но делать этого не советуют.
Правильная конструкция для вызова нескольких рефрешей:
JavaScript:
XSP.partialRefreshGet(id1, {
onComplete: function() {
XSP.partialRefreshGet(id2, {
onComplete: function() {
XSP.partialRefreshGet(id3);
}
}
}
}