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

Тема в разделе "Lotus - Xpages", создана пользователем garrick, 27 ноя 2015.

  1. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Как сделать что-то подобное "Computed Subform" на XPages? Грузить всё сразу в div и прятать "до поры-да времени" не подойдёт, т.к. вариантов subform очень много. Суть в чём? Пользователю открывается форма с некоторыми общими полями - он их заполняет. А одно из этих общих полей это "тип документа" и при выборе типа документа подгружаются дополнительно поля для ввода данных специфичные выбранному типу документа.
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    да-да :) это работает :)
     
  4. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Похоже, тока мы с тобой эту шоколадку кушаем :)
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну такое :)
     
  6. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Просто на элементе нужно прописать условие render и далее по изменению типа документа рефрешить по событию родителя скрытого элемента условие render переопределится и элемент покажется ну или скроется в зависимости от условия
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    обсуждается нежелательность присутствия доп. скрытых элементов
     
  8. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    свойство render не просто "прячет" а совсем не создает на странице ничего если установлено в false и значит что на клиенте сабформа будет отсутствовать полностью. При ajax запросе будет обновляться и отображаться. Есть и другие более сложные способы, но если вам нужно чтобы эта сабформа была частью формы, то любой другой способ неприменим. Допустим можно просто по csjs http запросу получать html и вставлять в форму но в этом случае на сервер при post отправке ничего не попадет потому что вот так работает JSF.
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    повторю - на форму не хотят выносить элемент
     
  10. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Если элемента нет на форме, а значит в дереве контролов который JSF создает при обработке Xpages, то и получить данные из него также нельзя. Тогда нужно на сервере взять получить дерево и вставить в нужное место нужный элемент на java и тогда все будет. Я так делал, но задача эта не очень тривиальна в принципе.
    Есть еще вариант использовать dynamicContent из Extension Library, но в данном случае это излишне на мой взгляд. Сделать можно все что угодно, главное чтобы это не было победой над здравым смыслом.
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Я так понимаю у человека сложно с пониманием.
    Ты понимаешь разницу между отсутствует на web-странице (render) и отсутствие в дизайне в принципе?
     
  12. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Разницу понимаю. Это у тебя сложно с пониманием того, что если чего-то нет, то и получить что-то из ничего не получится. Вот моя основная мысль.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    а если меняется дерево? ;)
     
  14. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    797
    Симпатии:
    78
    Мне то же интересно, как в бакэнде поменять тек. дерево. - только стоит задача не подформу динамически "встраивать" , а набор элементов управления (до сотни полей+лейоуты ), которые компонуются из справочника в зависимости от тек. состояния док-та. Ест-сно они при post должны упасть в базу...
     
  15. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Я выше и писал что один из способов это поменять дерево, только это явная победа над здравым смыслом. Если есть задача что то отобразить по условию, то свойство render для этого идеально подходит, но если нужно чтобы не было элемента на форме в дизайне, то выбрана неверная технология и JSF для этого не подходит. Можно использовать сервлеты например и самому парсить request и т.д.
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    есть ряд задач - подключить контент, кот. уже существует (в данном случае контрол)
    но контролов может быть куча и лепить все их на форму, в кот они не нужны (в том или ином случае) - неудобно, да и дизайнер будет глючить...
    что значит выбрана - этот вариант без альтернативы ;) (в срезе xPages)
    а можно писать на Си... :)
    странная дискуссия...
    вот были сабформы, кот. вычисляются и подгружаются динамически и разработчики использовали эту фичу
    и топик начался с поиска подобного на хэпагах
     
  17. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Если использовать CustomControl и определить в нем Design Definition в виде просто div элемента с названием контрола, то дизайнер глючить не будет. Лепите сколько хотите для дизайнера это просто <div> все что внутри CustomControl дизайнеру фиолетово. Если выбрана технология Xpages и без вариантов, то ее особенность в том что дерево вида строится на сервере и если в дизайне в xml нет определения контрола, то и соответствующий ему java объект создан не будет со всеми вытекающими. Так что или шашечки или ехать.
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    это в топике не обсуждается (я точно этого не делаю ;) ) и про "особенности", большинство участников в курсе
    и если люди интересуются инъекцией http://stackoverflow.com/a/15766628 это вполне имеет право на жизнь
    цель - "упростить" дизайн-тайм и перенести часть на код
     
  19. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    - "это идеально подходит", на сложной страничке может привести к её медленному умиранию (в смысле быстродействия), а вот display:none подойдёт, но, элемент будет на странице(
    - ни что не мешает вместе с JSF использовать simpleHTML - как хочу, так и изменяю DOM.
    - и что из этого вытекает? getComponent не будет работать?;)
    И ващще, обращаться к серверу с каждым телодвижением - не comme il faut, можешь сделать на CSJS - делай.
    Задача сводится к следующим моментам:
    1 во время работы загрузка CustomControls в нужные места по условиям (один из вариантов отмечен выше - работает на ура)
    2 если необходимо сохранить динамически изменённый дизайн странички, вместе с сохранением дока, сохранить последние условия, по которым грузились СС и новые айтемы, если они появились.
    3 при последующем открытии этой странички - сразу подгрузить нужные контролы по сохранённым в доке условиям.
    - лучше, всё же, грузить заранее подготовленные СС, чем заморачиваться кусочками.
     
  20. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Тебе уже много раз говорили: в зависимости от задачи - могут применяться разные методы.

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

Поделиться этой страницей