我是 GWT 的新手。我有一个使用MultiWordSuggestOracle填充的简单SuggestBox。用户将他们的数据输入到这个 SuggestBox 中,如果他们发现任何与现有 Suggestions 匹配的内容,那就太好了。我可以在 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
}
});
但是允许用户输入建议 oracle 中尚不存在的值,在这种情况下,我应该读取该值并对此进行处理,可能会将其作为新数据保存到 db。(我正在寻找的东西是类似于我们显示建议的浏览器导航小部件,用户可以选择任何建议,或者他可以输入他的新条目并继续。)我需要的是一种检索用户输入的新文本的方法?单击按钮即可读取数据。我尝试的是这个。
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);
}
});
除了一种情况外,这工作正常。假设 oracle 中有两个建议,比如“createTicketWsdl”和“createTicketTimeout”。当用户输入“cr”时,他选择了这两个选项,如果他通过按键盘 ENTER选择“createTicketWsdl” ,那么我的警报将打印“createTicketWsdl”,这是正确的。但是,如果他使用鼠标选择“createTicketWsdl” ,那么我的警报将打印“cr”(我试图发布屏幕截图以更好地理解,但作为新用户我是不允许的)。(我想得到'createTicketWsdl',因为那是他选择的)。打印我的警报后不久,SuggestBox 中的值更改为“createTicketWsdl”。
有没有办法检索建议框的值?我看到了一个类似的线程GWT SuggestBox + ListBox Widget,其中提供了一些自定义小部件的源代码。但我没有尝试这样做,因为我想要的只是从 SuggestBox 获取当前值,我希望应该有一些简单的方法。
感谢你的帮助!