У меня есть большая древовидная структура (почти 6000 узлов и растущая), которую я отображаю в своем веб-приложении как Richfaces rich: tree.
Когда выбран узел, функция-обработчик запускает компонент-бэк.немного логики и работает немного магии.
Одна вещь, которая случается, состоит в том, что дерево перерисовывается с помощью Ajax-вызова для каждого выбора в дереве.Это означает, что каждый раз при изменении выбора на сервер отправляется более 2 МБ.
Как вы можете догадаться, моя проблема в том, что это очень медленно.То, что я хотел бы сделать, - это перерисовать только выбранный узел дерева, а не все дерево, так как, надеюсь, это всего лишь ПОСТУПАЕТ пару килобайт на сервер.
Это мой первый настоящий проектв JSF2.0, используя RichFaces 4.1.0, так что я погуглил как сумасшедший для решения и копался в документации на сайте RichFaces, но пока не нашел решения.
Мой код выглядит так:
<h:form id="main">
<a4j:outputPanel ajaxRendered="true">
<rich:panel id="treePanel" header="Tree">
<rich:tree id="theTree" var="tree" value="#{treeBean.rootNodes}" selectionType="ajax" toggleType="client" selectionChangeListener="#{treeBean.selectionChanged}">
<rich:treeNode>
<h:outputText styleClass="#{tree.selected?'selectedNode':''}" value="#{tree.title}" />
</rich:treeNode>
</rich:tree>
</rich:panel>
</a4j:outputPanel>
</h:form>