我是GWT新手。我有一个简单的SuggestBox,它使用MultiWordSuggestOracle进行填充。用户输入他们的数据到这个SuggestBox,如果他们发现任何匹配与现有的建议它的好和好。我能够在SelectionHandler代码中检索这个值,如下所示。从GWT SuggestBox检索当前用户输入的值
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);
}
});
这是除了一个场景中工作的罚款。假设oracle中有两个建议,例如'createTicketWsdl'和'createTicketTimeout'。当用户输入'cr'时,他选择了这两个选项,如果他通过按下键盘ENTER选择'createTicketWsdl',那么我的警报正在打印'createTicketWsdl',这是正确的。但是,如果他选择'createTicketWsdl'使用鼠标,那么我的警报是打印'cr'(我试图张贴屏幕截图给一个更好的理解,但作为一个新用户,我不允许)。想成为'createTicketWsdl',因为他已经选择了它)。打印完警报后不久,SuggestBox中的值变为“createTicketWsdl”。
有没有办法检索建议框的值?我看到一个类似的线程GWT SuggestBox + ListBox Widget,其中一些自定义小部件的源代码可用。但是我没有尝试过这样的痛苦,因为我想要的仅仅是从SuggestBox获得当前值,我希望应该有一些简单的方法。
感谢您的帮助!
非常感谢Geek的快速响应,并对问题提出了意见。肯定会尝试改进。我没有时间对你的反应进行一些思考。肯定会看到这个,很快回来......(忙于其他一些官方工作)。再次感谢 – hashcoder 2012-03-13 12:06:54