Создание динамических элементов управления в jsf managed bean?

Я хочу динамически создать объект HtmlDivElement в моем управляемом jsf bean и добавить его в панель, но кажется, что HtmlDivElement - это интерфейс. Итак, как я могу это сделать?

Ответ 1

Это довольно большая путаница. org.w3c.dom.html.HTMLDivElement не является компонентом JSF. Это представляет собой элемент W3 DOM, который имеет совершенно другую цель (JAXP, разбор DOM).

Вам нужен подкласс javax.faces.component.UIComponent (просто нажмите свой путь через "Прямые известные подклассы" в предыдущем Javadoc, чтобы найти их все). Чтобы отобразить элемент HTML <div>, используйте HtmlPanelGroup, для атрибута layout установлено значение block.

HtmlPanelGroup div = new HtmlPanelGroup();
div.setLayout("block");
someParentComponent.getChildren().add(div);

который делает то же самое, что и в "статическом" JSF:

<h:panelGroup layout="block" />