Способ, которым я обошел это, - это исключить геттеры для Oracle, поскольку, как только мой докладчик установит его, мое мнение не будет нуждаться в информации об этом. Итак, мой интерфейс выглядел так:
public interface Display {
...
void setSuggestionOracle(SuggestOracle oracle);
HasSelectionHandlers<SuggestOracle.Suggestion> getSelectionListener();
}
Проблема, с которой я столкнулся, заключалась в возможности добавить предложение в SuggestBox после его создания. Чтобы обойти это, я инициализировал пустой SuggestBox, а затем удалил его из представления, обновил и вставил обратно в позицию.
После этого вы можете написать свой обработчик (в докладчике), чтобы проверить, является ли предложение экземпляром вашего пользовательского предложения, и ваш докладчик может обработать выбор и отправить соответствующую информацию обратно в представление.
Делая это, все ваше мнение знает, что оно будет принимать общие предложения для чего-то, и что через некоторое время оно будет обновляться с информацией (которая будет в результате предложения, но мнение состоит в том, чтобы «скромно» знать это).