我正在寻找一种将某种参数添加到使用 CDI 事件机制传播的事件的方法。
我知道对于我的示例,我可以创建不同的事件,但我正在寻找一种方法来重用相同的事件,但使用不同的参数。然后使用此事件参数注释一些方法,以便在触发事件时仅调用此方法。
以下示例不起作用,但说明了我的意图。这有可能吗?
//custom event class
public class NotifyChange {
}
//change the model and notify the view
public class MyPresenter {
@Inject
private Events<NotifyChange> events;
public void updateUser() {
//change some user settings
events.fire(new NotifyChange("user")); //that what I'm somehow looking for
}
public void updateCustomer() {
//change some customer settings
events.fire(new NotifyChange("customer"));
}
}
//change the view according to events
public class MyView {
void listenUserChange(@Observes NotifyChange("user") evt) {
//update UI
}
void listenCustomerChange(@Observes NotifyChange("customer") evt) {
//update UI
}
}