У меня есть собственный класс composer / controller, который расширяет GenericForwardComposer.Внутри этого класса у меня есть несколько методов, которые используются для инициализации компонентов пользовательского интерфейса с данными.Это очень длительная операция, и для ее завершения требуется время.Из-за проблем с производительностью я пытаюсь асинхронно загрузить эти данные, используя Очереди событий.Таким образом, он не будет блокировать пользователям доступ к другим функциям, пока процесс выполняется в фоновом режиме.
В моем пользовательском классе есть метод init, который запускает обработку.Этот метод вызывает несколько других методов, которые обрабатывают большую часть работы.
Я думал, что я могу использовать что-то вроде очередей событий:
public class MyWidgetController extends GenericForwardComposer
{
public void init(final Component comp)
{
//other method logic ...
EventQueue queue = EventQueues.lookup("myQueue", EventQueues.SESSION, true);
queue.subscribe(this); //not sure
queue.publish(new Event("onInitPrimaryLoad", componentA, ""));
queue.publish(new Event("onInitSecondaryLoad", componentB, ""));
}
@ViewEvent(componentID = "componentA", eventName = "onInitPrimaryLoad")
public void onInitPrimary( final Event event){ //logic }
@ViewEvent(componentID = "componentB", eventName = "onInitSecondaryLoad")
public void onInitSecondary( final Event event){ //logic }
//other class methods…
}
Не уверен, что все это правильно.На самом деле не нужен метод обратного вызова, поскольку сами события (публикации) загружают компоненты пользовательского интерфейса с данными.Приложение работает без проблем, но я не уверен, правильно ли я его реализую.
Любые советы или исправления приветствуются