null

FilterBy в Primefaces p:tree

Всем добрый день!

Сегодня рассмотрим такую проблему, как неработающая фильтрация по полю узла p:tree в Primefaces 6.2.

В данном примере строится дерево из элементов, имеющих поле name и должна осуществляться фильтрация по этому полю, однако этого не происходит.

<p:tree value="#{customBean.treeRoot}" var="node" filterBy="#{node.name}">
                <p:treeNode>
                    <h:outputText value="#{node.name}"/>
                </p:treeNode>
</p:tree>

Проблема заключается в том, что фильтр данного компонента игнорирует поля, которые указываеются в filterBy и осуществляет фильтрацию по toString() узла. 

Решение проблемы приходит само собой - необходимо написать класс-оболчку, который в toString() будет возращать необходимое нам поле, по которому мы будет осуществлять фильтрацию. А так же getName(), возвращающий значение поля name исходного объекта. Код такого класса довольно очевиден, приводить его не буду. Однако, в самом компоненте необходимо изменить filterBy="#{node.name}" на filterBy="#{node}"
 

<p:tree value="#{customBean.treeRoot}" var="node" filterBy="#{node}">
                <p:treeNode>
                    <h:outputText value="#{node.name}"/>
                </p:treeNode>
</p:tree>

Надеюсь этот хинт кому-нибудь поможет.