2016-03-16 1 views
1

Я работаю с полем предложений в GWT, но я столкнулся с проблемой, в которой suggestionBox.showSuggestionList() не показывает никаких результатов через focusHandler.Почему список предложений не заполняется для предложения в gwt.?

Я создал рекомендацию оракул и suggestBox следующего

MultiWordSuggestOracle mySuggestionOracle=new MultiWordSuggestOracle(); 
SuggestBox mySuggestBox=new SuggestBox(mySuggestionOracle); 

затем после того, когда я получил suggestionList значения, т.е. массив предложений от где я добавляю эти значения внушения оракула как

for(String str : suggestionList){ 
    mySuggestionOracle.add(str); 
} 

Выше код написан в поле зрения, и я добавляю FocusFandler к этому предложениюBox в презентаторе as,

view.mySuggestBox().getValueBox().addFocusHandler(new FocusHandler() { 
     @Override 
     public void onFocus(FocusEvent event) { 
      view.mySuggestBox().setText(" "); 
      view.mySuggestBox().showSuggestionList(); 
     } 
    }); 

что может быть проблемой, почему этот showSuggestionList() не показывает никаких предложений, если мы нажмем кнопку suggestBox.? но если мы введем некоторый текст в suggestBox, тогда он будет показывать правильные предложения, специфичные для ввода. т. е. если мы введем его, все предложения начинаются с *.

Может кто-нибудь помочь, если бы имел тот же сценарий или какую-то идею, если я где-то ошибаюсь?

ответ

1

Во-первых, чтобы показать предложения по умолчанию, вы должны установить пустую строку как текст в SuggestBox до того, чтобы назвать метод showSuggestionList (я полагаю, нет строки в suggestionList начинается ти белого пространства).

public void onFocus(FocusEvent event) { 
    view.mySuggestBox().setText(""); 
    view.mySuggestBox().showSuggestionList(); 
} 

секунд, чтобы отобразить все предложения, вы должны установить их с setDefaultSuggestionsFromText методом MultiWordSuggestOracle объекта.

Пример константа

final static String[] SUGGESTIONS = {"alfred", "alicia", "bernard", "bruno", "bernadette"}; 
final static List<String> suggestionList = new ArrayList<String>(Arrays.asList(SUGGESTIONS)); 

Ваш код инициализация:

for (String str : suggestionList) { 
    mySuggestionOracle.add(str); 
} 
mySuggestionOracle.setDefaultSuggestionsFromText(suggestionList); 


mySuggestBox = new SuggestBox(mySuggestionOracle); 
mySuggestBox.setLimit(suggestionList.size()); 
+0

и что, если я создаю мой собственный оракул, который будет принимает значение из базы данных через асинхронный вызов внутри моего класса оракула.? –

Смежные вопросы