全局事件分 UiEvent 和 ApplicationEvent,两者不能互通。当后台数据(core或global)更新后前端要同步更新时全局事件用不了!用 ApplicationEvent,web模块无法读取,而 UiEvent 只能在 web模块中使用!请问遇到这种情况时我们该怎么处理?
- 使用 GlobalUiEvent 事件
- 通过全局 ApplicationEvent “中继” 一下, 先触发一个全局 ApplicationEvent ,在 web 层响应这个事件,然后再触发一个 UiEvent
1 个赞
使用了 全局事件 扩展,我这样的代码结构有问题吗?还是哪里遗漏了?
事件
发布
订阅
能写个案例不?web 层响应怎么写?
貌似自己写出来了
搞定~
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 个赞