Есть ли способ использовать объект javascript в качестве пользовательского свойства элемента управления?

#xpages

#xpages

Вопрос:

В настоящее время я создаю пользовательский элемент управления, который будет использоваться в качестве навигатора просмотра приложения (классический стиль OneUI). Прежде всего: это проект на основе 8.5.3, и, к сожалению, нет способа использовать Extlib или другие расширения / плагины. Итак, мы должны сами создавать все сложные вещи, используя только то, что поставляется «из коробки» с 8.5.3.

Я бы хотел создать свой навигатор, используя повторяющийся элемент управления, содержащий <xp:link> элементы управления. Источником данных может быть массив объектов javascript, где каждый отдельный объект будет выглядеть следующим образом:

 var navEntry = {"entryLabel" : "label-of-link", 
      "entryTarget" : "target-url-of-link",
      "entryStyle" : "style-to-emphasize-selected-link"}
 

Затем каждый элемент массива будет описывать одну запись навигатора.
Поскольку навигатор будет использоваться во всех возможных Xpages «DominoView», имеет смысл создать массив объектов JS на уровне Xpage, а затем передать эту информацию в пользовательский элемент управления.

Я знаю, что существует несколько способов сделать это, и одним из них могут быть «Свойства пользовательского элемента управления». Если бы был способ передать мой массив объектов JS.

(Надеюсь, я смог бы прояснить, что я пытаюсь здесь сделать …)

Ответ №1:

Для меня этот объект действительно выглядит как HashMap. Вы должны иметь возможность передать это в пользовательский элемент управления через пользовательское свойство, если вы используете тип java.util .Я бы подумал, что HashMap. Я уверен, вам нужно будет ввести его. Я передал пользовательские объекты с помощью java.lang.Объект.

Комментарии:

1. Как писал Дэвид, создайте объект Java и передайте этот объект в пользовательский элемент управления. Я бы никогда не создал объект Javascript и не отправил его в моем приложении XPage. потому что внезапно вы получите ошибку сериализации.

2. спасибо вам обоим; @David: вы правы, это действительно хэш-карта. Я попробую сделать это как можно скорее

Ответ №2:

Пользовательский элемент управления будет загружен во время события загрузки страницы, и обычно свойства должны быть доступны в этот момент. Если они загружаются на этапе ответа на рендеринг, то уже слишком поздно. Таким образом, ваш объект SSJS должен быть вычислен при загрузке страницы.

Чтобы использовать содержимое элемента управления repeat, вам нужно будет установить repeatControls=true , в противном случае повтор создается только во время ответа на рендеринг. До тех пор это всего лишь один набор элементов управления без каких-либо данных в них. Тем не менее, я почти уверен, что repeatControls=»true» означает, что вы получаете только количество строк, которые вы определяете. Вы не можете изменить его с помощью пейджера.

Комментарии:

1. подкачка страниц здесь отсутствует в списке задач, так что это не должно быть проблемой. В любом случае, спасибо, что указали на это.

Ответ №3:

Вы можете вручную определить тип настраиваемого свойства. Для стандартного объекта SSJS вы используете «com.ibm.jscript.std.ObjectObject«, для массива SSJS вы используете «com.ibm.jscript.std.ArrayObject» и т. Д. В качестве редактора для настраиваемого свойства я устанавливаю редактор строк («Строковое значение»).