Пожалуйста, рассмотрите следующий пример дерева с гранями:
<rich:tree switchType="ajax">
<rich:treeNodesAdaptor id="officeNodeAdaptor" nodes="#{officesBean.offices}" var="office" >
<rich:treeNode changeExpandListener="#{office.loadEmplyeesIfNeeded}" >
<h:outputText value="#{office.name}" />
</rich:treeNode>
<rich:treeNodesAdaptor id="employeeNodeAdaptor" nodes="#{office.employees}" var="employee">
<rich:treeNode>
<h:outputText value="#{employee.name}" />
</rich:treeNode>
</rich:treeNodesAdaptor>
Это образец дерева для представления структуры данных «Офисы -> Сотрудники».
Я хочу, чтобы emplyees загружались ленивым способом - поэтому я представил слушателя расширения loadEmplyeesIfNeeded.
Все работает хорошо, кроме одной вещи. Работники загружаются после расширения офисного узла. Таким образом, при рендеринге дерева все офисы не имеют ни одного сотрудника и отображаются как листы .. И, конечно, листы не могут быть расширены ....
Чтобы сделать длинный магазин коротким. Есть ли способ установить, что узел должен отображаться как узел (с возможностью расширения), несмотря на отсутствие дочерних элементов?
Лучше всего было бы, если бы rich: treeNode имел бы какой-нибудь атрибут, например isNode, но это не так.
b.t.w. Я мог бы решить эту проблему, просто добавив в каждый офис фальшивого сотрудника при инициализации офисов ... Но это не очень хорошая работа вокруг ...
Заранее спасибо за помощь.