Я новичок в GWT.У меня есть простой SuggestBox , который заполняется с помощью MultiWordSuggestOracle .Пользователи вводят свои данные в этот SuggestBox, и если они находят какое-либо совпадение с существующими предложениями, это хорошо.Я могу получить это значение в коде SelectionHandler, как показано ниже.
display.getSuggestBox().addSelectionHandler(new SelectionHandler<Suggestion>() {
public void onSelection(SelectionEvent<Suggestion> event) {
String selectedProperty = ((SuggestBox)event.getSource()).getValue();
// do something with the property value
}
});
Но пользователям разрешено вводить значения, которых еще нет в оракуле предложения, и в этом случае я должен прочитать это значение и сделатьчто-то с этим, может быть сохранение в БД в качестве новых данных. (То, что я ищу, это что-то вроде виджета навигации браузера, где мы показываем предложения, пользователи могут выбрать любое предложение, или он может ввести свою новую запись ипродолжить.) Что мне нужно, это способ восстановить этот новый текст, введенный пользователем?Данные будут прочитаны по нажатию кнопки.Я попробовал вот что.
display.getSaveBtn().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
String selectedProperty = display.getSuggestBox().getValue();
//String selectedProperty2 = display.getSuggestBox().getText();
// Blank in both cases :(
// tried display.getSuggestBox().getTextBox().getValue(),but blank again
}
});
Я пытался использовать обработчики событий onChange () (как показано ниже)
display.getSuggestBox().addValueChangeHandler(new ValueChangeHandler<String>() {
public void onValueChange(ValueChangeEvent<String> event) {
String selectedProperty = ((SuggestBox)event.getSource()).getValue();
Window.alert("on change -- "+selectedProperty);
}
});
Это работает нормально, за исключением одного сценария.Предположим, в оракуле есть два предложения: createTicketWsdl и createTicketTimeout.Когда пользователь вводит 'cr' , он выбирает эти две опции, и если он выбирает 'createTicketWsdl' , нажимая клавиатуру ENTER , то мое предупреждение печатает 'createTicketWsdl', которыйверно.Но если он выбирает «createTicketWsdl» с помощью мыши , то мое предупреждение печатает 'cr' (я пытался опубликовать скриншот, чтобы лучше понять, но, будучи новым пользователем, я 'я не могу). (который я хотел получить как 'createTicketWsdl', вот что он выбрал).Вскоре после печати моего предупреждения значение в SuggestBox изменится на 'createTicketWsdl'.
Есть ли способ получить значение окна предложения?Я видел похожую тему GWT SuggestBox + ListBox Widget , где доступен некоторый исходный код для пользовательского виджета.Но я не взял на себя труд испытать это, так как мне нужно просто получить текущее значение из SuggestBox, и я надеюсь, что должен быть какой-то простой способ.
Спасибо за вашу помощь!