【问题标题】:how to enforce selection from the suggestBox list in gwt如何强制从 gwt 中的建议框列表中进行选择
【发布时间】:2012-06-14 22:26:45
【问题描述】:

我们正在使用一个 gwt SuggestBox,它会在用户开始在此框中输入时显示建议。但是,最终用户有可能只是键入某些内容而不从列表中选择任何内容。

如果用户未从列表中选择任何内容,我们希望避免此用例并显示错误。

关于我们如何实现这一点的任何建议?真正的问题是如何获取当前显示的建议列表?我在suggestOracle 类中没有看到任何方法来获取列表?

那么,无论如何不触发另一个查询来获取当前显示的建议列表?

【问题讨论】:

    标签: gwt suggestbox


    【解决方案1】:

    侦听底层TextBoxValueChangeEvent 并检查该值是否与任何可选值匹配(您可以调用 SuggestOracle 并在它返回零或多于 1 个结果时显示错误;如果它返回单个结果,您可能需要检查值是否相等)。

    【讨论】:

    • 那么有没有办法获取当前显示的建议列表?在 javadoc 的 apis/methods 中找不到
    • suggest.getSuggestOracle().requestSuggestions(new Request(suggest.getText()), new Callback() { public void onSuggestionReady(Request req, Response resp) { if (resp.getSuggestions().length() != 1 || !resp.getSuggestions().get(0).equals(req.getQuery()) { /* error */ } });
    • 这将再次触发查询以再次获取列表。这就是我想要避免的,因为我的实现通过 RPC 调用获取数据,这很昂贵
    • 如果您将用户输入的每一个字符都发送到您的服务器,那么发出额外的请求以验证该值是否有效没什么大不了的。如果您关心请求的数量,请添加限制和缓存:将发送请求推迟几毫秒并在每个新请求(字符类型)时取消/重新安排,并缓存结果,以便您的最后一个验证请求不会到达网络.一个好的缓存策略也会等待一个正在进行的等效请求,而不是发出一个新请求。
    • code.google.com/p/google-web-toolkit-incubator/source/browse/… 是一个好的开始:它只会在没有等待响应的情况下发送请求。将其与最小长度、发送请求前的轻微延迟和本地缓存相结合。
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多