Как сделать "computed subform" на xpages?

garrick

Lotus team
26.10.2009
901
61
#1
Как сделать что-то подобное "Computed Subform" на XPages? Грузить всё сразу в div и прятать "до поры-да времени" не подойдёт, т.к. вариантов subform очень много. Суть в чём? Пользователю открывается форма с некоторыми общими полями - он их заполняет. А одно из этих общих полей это "тип документа" и при выборе типа документа подгружаются дополнительно поля для ввода данных специфичные выбранному типу документа.
 
15.12.2015
21
0
#6
Просто на элементе нужно прописать условие render и далее по изменению типа документа рефрешить по событию родителя скрытого элемента условие render переопределится и элемент покажется ну или скроется в зависимости от условия
 
15.12.2015
21
0
#8
свойство render не просто "прячет" а совсем не создает на странице ничего если установлено в false и значит что на клиенте сабформа будет отсутствовать полностью. При ajax запросе будет обновляться и отображаться. Есть и другие более сложные способы, но если вам нужно чтобы эта сабформа была частью формы, то любой другой способ неприменим. Допустим можно просто по csjs http запросу получать html и вставлять в форму но в этом случае на сервер при post отправке ничего не попадет потому что вот так работает JSF.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#9
свойство render не просто "прячет" а совсем не создает на странице ничего если установлено в false и значит что на клиенте сабформа будет отсутствовать полностью
повторю - на форму не хотят выносить элемент
 
15.12.2015
21
0
#10
Если элемента нет на форме, а значит в дереве контролов который JSF создает при обработке Xpages, то и получить данные из него также нельзя. Тогда нужно на сервере взять получить дерево и вставить в нужное место нужный элемент на java и тогда все будет. Я так делал, но задача эта не очень тривиальна в принципе.
Есть еще вариант использовать dynamicContent из Extension Library, но в данном случае это излишне на мой взгляд. Сделать можно все что угодно, главное чтобы это не было победой над здравым смыслом.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#11
Если элемента нет на форме, а значит в дереве контролов который JSF создает при обработке Xpages, то и получить данные из него также нельзя. Тогда нужно на сервере взять получить дерево и вставить в нужное место нужный элемент на java и тогда все будет. Я так делал, но задача эта не очень тривиальна в принципе.
Есть еще вариант использовать dynamicContent из Extension Library, но в данном случае это излишне на мой взгляд. Сделать можно все что угодно, главное чтобы это не было победой над здравым смыслом.
Я так понимаю у человека сложно с пониманием.
Ты понимаешь разницу между отсутствует на web-странице (render) и отсутствие в дизайне в принципе?
 
15.12.2015
21
0
#12
Разницу понимаю. Это у тебя сложно с пониманием того, что если чего-то нет, то и получить что-то из ничего не получится. Вот моя основная мысль.
 

rinsk

Lotus team
12.11.2009
900
44
#14
Мне то же интересно, как в бакэнде поменять тек. дерево. - только стоит задача не подформу динамически "встраивать" , а набор элементов управления (до сотни полей+лейоуты ), которые компонуются из справочника в зависимости от тек. состояния док-та. Ест-сно они при post должны упасть в базу...
 
15.12.2015
21
0
#15
Я выше и писал что один из способов это поменять дерево, только это явная победа над здравым смыслом. Если есть задача что то отобразить по условию, то свойство render для этого идеально подходит, но если нужно чтобы не было элемента на форме в дизайне, то выбрана неверная технология и JSF для этого не подходит. Можно использовать сервлеты например и самому парсить request и т.д.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#16
Если есть задача что то отобразить по условию
есть ряд задач - подключить контент, кот. уже существует (в данном случае контрол)
но контролов может быть куча и лепить все их на форму, в кот они не нужны (в том или ином случае) - неудобно, да и дизайнер будет глючить...
то выбрана неверная технология и JSF
что значит выбрана - этот вариант без альтернативы ;) (в срезе xPages)
Можно использовать сервлеты например и самому парсить request
а можно писать на Си... :)
странная дискуссия...
вот были сабформы, кот. вычисляются и подгружаются динамически и разработчики использовали эту фичу
и топик начался с поиска подобного на хэпагах
 
15.12.2015
21
0
#17
есть ряд задач - подключить контент, кот. уже существует (в данном случае контрол)
но контролов может быть куча и лепить все их на форму, в кот они не нужны (в том или ином случае) - неудобно, да и дизайнер будет глючить...
что значит выбрана - этот вариант без альтернативы ;) (в срезе xPages)а можно писать на Си... :)
странная дискуссия...
вот были сабформы, кот. вычисляются и подгружаются динамически и разработчики использовали эту фичу
и топик начался с поиска подобного на хэпагах
Если использовать CustomControl и определить в нем Design Definition в виде просто div элемента с названием контрола, то дизайнер глючить не будет. Лепите сколько хотите для дизайнера это просто <div> все что внутри CustomControl дизайнеру фиолетово. Если выбрана технология Xpages и без вариантов, то ее особенность в том что дерево вида строится на сервере и если в дизайне в xml нет определения контрола, то и соответствующий ему java объект создан не будет со всеми вытекающими. Так что или шашечки или ехать.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#18
. Если выбрана технология Xpages и без вариантов, то ее особенность...
это в топике не обсуждается (я точно этого не делаю ;) ) и про "особенности", большинство участников в курсе
и если люди интересуются инъекцией
Для просмотра контента необходимо: Войти или зарегистрироваться
это вполне имеет право на жизнь
цель - "упростить" дизайн-тайм и перенести часть на код
 

alexas1

Lotus team
10.04.2014
726
145
#19
есть задача что то отобразить по условию, то свойство render для этого идеально подходит,
- "это идеально подходит", на сложной страничке может привести к её медленному умиранию (в смысле быстродействия), а вот display:none подойдёт, но, элемент будет на странице(
Если выбрана технология Xpages и без вариантов
- ни что не мешает вместе с JSF использовать simpleHTML - как хочу, так и изменяю DOM.
соответствующий ему java объект создан не будет со всеми вытекающими.
- и что из этого вытекает? getComponent не будет работать?;)
И ващще, обращаться к серверу с каждым телодвижением - не comme il faut, можешь сделать на CSJS - делай.
Задача сводится к следующим моментам:
1 во время работы загрузка CustomControls в нужные места по условиям (один из вариантов отмечен выше - работает на ура)
2 если необходимо сохранить динамически изменённый дизайн странички, вместе с сохранением дока, сохранить последние условия, по которым грузились СС и новые айтемы, если они появились.
3 при последующем открытии этой странички - сразу подгрузить нужные контролы по сохранённым в доке условиям.
если люди интересуются инъекцией
Для просмотра контента необходимо: Войти или зарегистрироваться
это вполне имеет право на жизнь
- лучше, всё же, грузить заранее подготовленные СС, чем заморачиваться кусочками.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#20
Если использовать CustomControl и определить в нем Design Definition в виде просто div элемента с названием контрола, то дизайнер глючить не будет. Лепите сколько хотите для дизайнера это просто <div> все что внутри CustomControl дизайнеру фиолетово. Если выбрана технология Xpages и без вариантов, то ее особенность в том что дерево вида строится на сервере и если в дизайне в xml нет определения контрола, то и соответствующий ему java объект создан не будет со всеми вытекающими. Так что или шашечки или ехать.
Тебе уже много раз говорили: в зависимости от задачи - могут применяться разные методы.

Описываю ситуацию. Вопросы "почему", "зачем", "а можно было взять готовое" - не обсуждаются!
Поступила тебе задача написать опросник. Не единоразовый опрос, а полноценную систему. Структуру базы не обсуждаем. Сугубо WEB-страницу.
Какие методы реализации?