我有一个扩展 GenericForwardComposer 的自定义作曲家/控制器类。在这个类中,我有一些用于使用数据初始化 UI 组件的方法。这是一个很长的操作,需要时间才能完成。由于性能问题,我尝试使用事件队列异步加载这些数据。这样,当进程在后台运行时,它不会阻止用户访问其他功能。
在我的自定义类中有一个启动处理的 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…
}
不确定这是否全部正确。不需要回调方法,因为事件(发布)本身正在向 UI 组件加载数据。该应用程序运行没有问题,但我不确定我是否正确实施。
任何建议或更正表示赞赏