全局事件使用范围问题

全局事件分 UiEvent 和 ApplicationEvent,两者不能互通。当后台数据(core或global)更新后前端要同步更新时全局事件用不了!用 ApplicationEvent,web模块无法读取,而 UiEvent 只能在 web模块中使用!请问遇到这种情况时我们该怎么处理?

  • 使用 GlobalUiEvent 事件
  • 通过全局 ApplicationEvent “中继” 一下, 先触发一个全局 ApplicationEvent ,在 web 层响应这个事件,然后再触发一个 UiEvent
1 个赞

使用了 全局事件 扩展,我这样的代码结构有问题吗?还是哪里遗漏了?

事件
image

发布
image

订阅
image

能写个案例不?web 层响应怎么写?

貌似自己写出来了 :smile:

image

搞定~

package de.diedavids.cuba.userinbox.web.message;

import com.haulmont.cuba.core.global.Events;
import de.diedavids.cuba.userinbox.event.SendMessageEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 全局事件中转
 *
 * @author Rubin
 * @version v1 2021/3/6 16:41
 */
@Component
public class SendMessageEventTransit {

    @Resource
    private Events events;

    @EventListener
    public void onSendMessage(SendMessageEvent event) {
        // 中转,GlobalUiEvent事件能发到web模块,不过是要在spring容器内的类才能订阅得到!
        events.publish(new SendMessageUiEvent(event.getSource()));
    }
}
1 个赞