- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何获取com.google.web.bindery.event.shared.EventBus
实例位于 com.google.gwt.user.client.ui.Composite
扩展类?;
我读过:How to use EventBus for non-Presenter class in GWTP? ,但我正在寻找类似的答案:
GWT 开发的最佳方法
我有一个小部件,我想触发一个事件 IndicatorEvent
。但在这个小部件中,我没有该事件的处理程序。
处理程序位于其他类中。因此,要启动它,我将使用:
fireEvent(new IndicatorEvent("Custom Widget Message"));
方法fireEvent
可在 com.google.web.bindery.event.shared;EventBus
中找到
public abstract void fireEvent(Event<?> event);
所以我需要一个 EventBus
的实例在扩展 Composite
的 View 类中。这个 View 没有 MVP 的东西(presenters、uihandlers 等),它只是一个简单的类元素/小部件。
我应该采取什么方法?
Presenter/View
一对? (在 gwtp Presenters 中是来自 PresenterWidget
类的 EventBus 引用)然后使用 ui 处理程序,将执行从 View 委托(delegate)给 Presenter?inject
EventBus
的实例进入小部件类?请帮忙。
最佳答案
任何 Widget 都可以在不使用 EventBus 的情况下触发事件。
如果您知道此事件的接收者,则只需将处理程序直接附加到接收者即可。为此,您可以在复合小部件中定义此方法:
public HandlerRegistration addIndicatorEventHandler(IndicatorEventHandler handler) {
return addHandler(handler, IndicatorEvent.TYPE);
}
然后在您的其他小部件(收件人)中:
myCustomWidget.addIndicatorEventHandler(new IndicatorEventHandler() {
@Override
public void onIndicator(IndicatorEvent event) {
// do something
}
});
如果 (a) 两个小部件(触发事件和事件接收者)之间没有直接/简单的链接,(b) 有许多接收者,和/或 (c) 您不希望使用 EventBus,则需要使用 EventBus在包含事件触发小部件和事件接收者的代码部分之间创建依赖关系。
关于java - 如何在 Composite 扩展类中获取 EventBus 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397669/
我是一名优秀的程序员,十分优秀!