gpt4 book ai didi

java - 从 GWT SuggestBox 检索当前用户输入的值

转载 作者:行者123 更新时间:2023-11-30 11:46:40 25 4
gpt4 key购买 nike

我是 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
}
});

但用户可以输入建议 oracle 中尚不存在的值,在这种情况下,我应该读取该值并对其进行处理,可能会将其作为新数据保存到数据库中。(我正在做的事情looking for is something like a browsers navigation widget which we show suggestions, users can pick any suggestions or he can type in his new entry and carry.)我需要的是一种检索用户输入的新文本的方法?单击按钮将读取数据。我试的是这个。

    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' 时,他会选择这两个选项,如果他选择 'createTicketWsdl' 按键盘 ENTER,那么我的警报将打印 'createTicketWsdl ' 哪个是对的。但是,如果他选择“createTicketWsdl”使用鼠标,那么我的警报将打印“cr”(我试图发布屏幕截图以提供更好的理解,但作为新用户我不被允许)。(我想得到它作为'createTicketWsdl',因为那是他选择的)。打印我的警报后不久,SuggestBox 中的值更改为“createTicketWsdl”。

有没有办法取回建议框的值?我看到了一个类似的线程 GWT SuggestBox + ListBox Widget ,其中提供了一些自定义小部件的源代码。但我并没有尝试这样做,因为我想要的只是从 SuggestBox 获取当前值,我希望应该有一些简单的方法。

感谢您的帮助!

最佳答案

你的问题不是很清楚。你需要稍微澄清一下你的语言。例如 - 以下是问题还是断言?我的意思是,这听起来像是一个断言,但它有一个问号。

What I needed is a way to retrieve this new text user has entered?

此外,我不明白“他被选择了”是什么意思。您的意思是说“他有选项...”吗?

因此,我猜测你的情况。

  1. 您有一个现有项目的列表框。

  2. 您有一个允许自由格式文本输入的文本框

  3. 前缀值与当前文本框条目匹配的任何项目,列表框项目将被过滤以限制为匹配项目。

  4. 即使当前文本框条目显示匹配的前缀来过滤列表框,用户仍然可以执行自由格式文本输入。所以,这里有两种可能的情况

    4.1 用户点击列表框选择筛选项之一

    4.2 用户按下回车键,触发选择文本框的当前值。

但是,您发现您的小部件参与竞争条件,因此当您单击该小部件时,会触发 ValueChangeHandler 而不是 SelectionHandler。我不知道您的小部件的结构,所以这是我最好的猜测。

问题是您允许使用两种不同的模式来获取结果,并且您可能没有定义明确的状态机来处理选择适当模式的问题。一种模式是通过文本框,另一种是通过在列表框中进行选择 - 并且您没有明确定义的方式来确定哪种模式在任何时候都有效。

如果我的猜测是准确的,这就是你需要做的:

  • 您必须将结果限制为仅来自文本框。

  • 您的列表框选择不得触发任何结果。列表框选择中的任何更改都必须传播回文本框 - 让用户有机会根据该值进行进一步的自由形式输入。

  • 只有文本框上的键盘输入才会触发最终结果。

关于java - 从 GWT SuggestBox 检索当前用户输入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com