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

  • Автор темы Автор темы garrick
  • Дата начала Дата начала

garrick

Lotus Team
26.10.2009
1 357
138
Как сделать что-то подобное "Computed Subform" на XPages? Грузить всё сразу в div и прятать "до поры-да времени" не подойдёт, т.к. вариантов subform очень много. Суть в чём? Пользователю открывается форма с некоторыми общими полями - он их заполняет. А одно из этих общих полей это "тип документа" и при выборе типа документа подгружаются дополнительно поля для ввода данных специфичные выбранному типу документа.
 
Похоже, тока мы с тобой эту шоколадку кушаем :)
 
Просто на элементе нужно прописать условие render и далее по изменению типа документа рефрешить по событию родителя скрытого элемента условие render переопределится и элемент покажется ну или скроется в зависимости от условия
 
свойство render не просто "прячет" а совсем не создает на странице ничего если установлено в false и значит что на клиенте сабформа будет отсутствовать полностью. При ajax запросе будет обновляться и отображаться. Есть и другие более сложные способы, но если вам нужно чтобы эта сабформа была частью формы, то любой другой способ неприменим. Допустим можно просто по csjs http запросу получать html и вставлять в форму но в этом случае на сервер при post отправке ничего не попадет потому что вот так работает JSF.
 
свойство render не просто "прячет" а совсем не создает на странице ничего если установлено в false и значит что на клиенте сабформа будет отсутствовать полностью
повторю - на форму не хотят выносить элемент
 
Если элемента нет на форме, а значит в дереве контролов который JSF создает при обработке Xpages, то и получить данные из него также нельзя. Тогда нужно на сервере взять получить дерево и вставить в нужное место нужный элемент на java и тогда все будет. Я так делал, но задача эта не очень тривиальна в принципе.
Есть еще вариант использовать dynamicContent из Extension Library, но в данном случае это излишне на мой взгляд. Сделать можно все что угодно, главное чтобы это не было победой над здравым смыслом.
 
Если элемента нет на форме, а значит в дереве контролов который JSF создает при обработке Xpages, то и получить данные из него также нельзя. Тогда нужно на сервере взять получить дерево и вставить в нужное место нужный элемент на java и тогда все будет. Я так делал, но задача эта не очень тривиальна в принципе.
Есть еще вариант использовать dynamicContent из Extension Library, но в данном случае это излишне на мой взгляд. Сделать можно все что угодно, главное чтобы это не было победой над здравым смыслом.
Я так понимаю у человека сложно с пониманием.
Ты понимаешь разницу между отсутствует на web-странице (render) и отсутствие в дизайне в принципе?
 
Разницу понимаю. Это у тебя сложно с пониманием того, что если чего-то нет, то и получить что-то из ничего не получится. Вот моя основная мысль.
 
а если меняется дерево? ;)
Мне то же интересно, как в бакэнде поменять тек. дерево. - только стоит задача не подформу динамически "встраивать" , а набор элементов управления (до сотни полей+лейоуты ), которые компонуются из справочника в зависимости от тек. состояния док-та. Ест-сно они при post должны упасть в базу...
 
а если меняется дерево? ;)
Я выше и писал что один из способов это поменять дерево, только это явная победа над здравым смыслом. Если есть задача что то отобразить по условию, то свойство render для этого идеально подходит, но если нужно чтобы не было элемента на форме в дизайне, то выбрана неверная технология и JSF для этого не подходит. Можно использовать сервлеты например и самому парсить request и т.д.
 
Если есть задача что то отобразить по условию
есть ряд задач - подключить контент, кот. уже существует (в данном случае контрол)
но контролов может быть куча и лепить все их на форму, в кот они не нужны (в том или ином случае) - неудобно, да и дизайнер будет глючить...
то выбрана неверная технология и JSF
что значит выбрана - этот вариант без альтернативы ;) (в срезе xPages)
Можно использовать сервлеты например и самому парсить request
а можно писать на Си... :)
странная дискуссия...
вот были сабформы, кот. вычисляются и подгружаются динамически и разработчики использовали эту фичу
и топик начался с поиска подобного на хэпагах
 
есть ряд задач - подключить контент, кот. уже существует (в данном случае контрол)
но контролов может быть куча и лепить все их на форму, в кот они не нужны (в том или ином случае) - неудобно, да и дизайнер будет глючить...
что значит выбрана - этот вариант без альтернативы ;) (в срезе xPages)а можно писать на Си... :)
странная дискуссия...
вот были сабформы, кот. вычисляются и подгружаются динамически и разработчики использовали эту фичу
и топик начался с поиска подобного на хэпагах
Если использовать CustomControl и определить в нем Design Definition в виде просто div элемента с названием контрола, то дизайнер глючить не будет. Лепите сколько хотите для дизайнера это просто <div> все что внутри CustomControl дизайнеру фиолетово. Если выбрана технология Xpages и без вариантов, то ее особенность в том что дерево вида строится на сервере и если в дизайне в xml нет определения контрола, то и соответствующий ему java объект создан не будет со всеми вытекающими. Так что или шашечки или ехать.
 
. Если выбрана технология Xpages и без вариантов, то ее особенность...
это в топике не обсуждается (я точно этого не делаю ;) ) и про "особенности", большинство участников в курсе
и если люди интересуются инъекцией это вполне имеет право на жизнь
цель - "упростить" дизайн-тайм и перенести часть на код
 
есть задача что то отобразить по условию, то свойство render для этого идеально подходит,
- "это идеально подходит", на сложной страничке может привести к её медленному умиранию (в смысле быстродействия), а вот display:none подойдёт, но, элемент будет на странице(
Если выбрана технология Xpages и без вариантов
- ни что не мешает вместе с JSF использовать simpleHTML - как хочу, так и изменяю DOM.
соответствующий ему java объект создан не будет со всеми вытекающими.
- и что из этого вытекает? getComponent не будет работать?;)
И ващще, обращаться к серверу с каждым телодвижением - не comme il faut, можешь сделать на CSJS - делай.
Задача сводится к следующим моментам:
1 во время работы загрузка CustomControls в нужные места по условиям (один из вариантов отмечен выше - работает на ура)
2 если необходимо сохранить динамически изменённый дизайн странички, вместе с сохранением дока, сохранить последние условия, по которым грузились СС и новые айтемы, если они появились.
3 при последующем открытии этой странички - сразу подгрузить нужные контролы по сохранённым в доке условиям.
если люди интересуются инъекцией это вполне имеет право на жизнь
- лучше, всё же, грузить заранее подготовленные СС, чем заморачиваться кусочками.
 
Если использовать CustomControl и определить в нем Design Definition в виде просто div элемента с названием контрола, то дизайнер глючить не будет. Лепите сколько хотите для дизайнера это просто <div> все что внутри CustomControl дизайнеру фиолетово. Если выбрана технология Xpages и без вариантов, то ее особенность в том что дерево вида строится на сервере и если в дизайне в xml нет определения контрола, то и соответствующий ему java объект создан не будет со всеми вытекающими. Так что или шашечки или ехать.
Тебе уже много раз говорили: в зависимости от задачи - могут применяться разные методы.

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Популярный контент