Мне нужно создавать экраны для отображения множества объектов JPA в представлении. Было бы здорово создать один манекен и передать ему набор полей, например. List<Object>
.Как программно генерировать компоненты JSF во время выполнения?
Лицо/пользовательский компонент должен будет преобразовать каждый элемент списка в соответствующий тег для отображения, например. поле перечисления в h: selectOneMenu, поле String в h: inputText и т. д. Это нужно сделать во время выполнения.
Что это самый простой способ сделать это?
Ничего себе! Круто! В моем проекте на стороне сервера я использовал org.primefaces.component.toolbar.Toolbar и добавил к нему детей UIComponent. В facelet я сделал ' ' и voila, который сгенерировал всю панель инструментов во время выполнения. В этом случае панель инструментов была создана уникально для каждого пользователя, что было действительно сладким. В facelet один тег, панель p: toolbar, сделал это. В сценарии, который вы описываете, как бы он выглядел в лице, например. к какому тегу я должен привязать корневой UIComponent? –
Было бы очень похоже на то, что вы описываете, я думаю. Вероятно, вы используете h: panelGroup в самом лице, или что-то вроде того, что будет родительским контейнером UIComponent. Вы связываете его точно так же, как описано в примере на панели инструментов, используя атрибут привязки. Структура создаст UIComponent, и у вас будет ссылка на нее в backingBean. После этого вы можете добавить к нему дочерние UIComponents, которые создаются программно. – EdH