26 окт. 2015 г.

Method must be called before the component is rendered gxt 2.3.1

Столкнулся с проблемой в gxt 2.3.1: При событии onRender для родительского компонента не обязательно все child-компоненты, уже isRendered. Это выражается Assertion Error с сообщением: "Method must be called before the component is rendered"

Не пробовал более новые версии gxt, возможно, там этой проблемы уже нет, а в этой по-быстрому можно решить проблему не просто вешая listener на родительский компонент, а собирая событие со всех компонентов.

      RenderCollector.create()
                .addComponent(parentComponent)
                .addComponent(childComponent1)
                .addComponent(childComponent2)
                .addComponent(childComponent3)
                .addComponent(child1OfchildComponent1)
                ...
                .addListener(listener)
                .build();

Устройство класса RenderCollector очень простое: запустить listener тогда, когда все компоненты будут isRendered.

Комментариев нет :

Отправить комментарий