Лучший способ сделать это - использовать посредник событий для отправки события, которое может прослушать другая часть. Таким образом, вам не нужна ссылка на другую часть.
Чтобы отправить событие:
@Inject
IEventBroker eventBroker;
String value = .... value you want to send (doesn't have to be a string)
eventBroker.post("/my/topic", value);
Чтобы прослушать событие, включите такой метод в класс, который хочет прослушивать (предполагается, что класс создан путем инъекции):
@Inject
@Optional
public void event(@UIEventTopic("/my/topic") final String value)
{
if (value != null) {
// TODO Handle value
}
}
Вы можете получить вызов метода с value
, установленным на null
во время инициализации детали, поэтому проверьте это.
Имя метода может быть любым.
@UIEventTopic
заставляет событие прибыть в поток пользовательского интерфейса. Используйте @EventTopic
, если вам нет дела до темы.
Имя темы может быть любым, но вы должны содержать /
разделителей, как показано.
Подробнее в этом руководстве.