【问题标题】:How to make SuggestBox (GWT) to suggest using only the first word of the suggestion?如何使 SuggestBox (GWT) 仅使用建议的第一个单词来建议?
【发布时间】:2013-10-30 07:05:10
【问题描述】:

我的标题可能有点模糊,但我想让我的建议框建议像 当我在文本框中输入字母时:

在建议框中输入的字母:A

A lpaca

一个

A rgon

不是这样的:

在建议框中输入的字母:A

一个 lpaca 一个可爱

A pple a nion

一个 rgon 一个 ttire

有没有办法让建议框表现得像这样? 我只想要与字母匹配的第一个单词,不包括 包含多个单词的字符串。

顺便说一下,我在 Eclipse 中使用 GWT。

编辑:我不擅长格式化,单词是

羊驼

苹果


急性羊驼

苹果负离子

氩气服装

再次编辑: 我希望它们看起来像这样:

条目:执行

建议:

执行

执行

执行者

条目:执行 t

建议:

执行时间

执行计时器

执行标题

基本上我希望它像谷歌搜索一样工作,只要我没有输入第二个单词,就不会出现多字建议。

【问题讨论】:

  • 您是否在使用任何 GWT 框架,例如 SmartGWT 之类的?
  • 我认为您必须创建自己的 SuggestOracle 版本。
  • @biplav 只是 eclipse indigo 的 gwt 插件,可以在安装新软件中下载。
  • 你检查过这个吗? gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/… 您可以覆盖 showSuggestions 以排除/过滤。
  • 所以您想忽略出现在第一个“空格”之后的所有单词?如果是,您可以在将其添加到 MultiWordOracle 之前准备好您的字符串列表。对于每个字符串,只留下第一个单词。

标签: java gwt suggestbox


【解决方案1】:

扩展 SuggestOracle 是必经之路!请检查下面的代码...一旦您的实现正确,请将您的 oracle 的新实例传递给您的 SuggestBox。

s.startsWith(userInput) 回答您的核心需求。但是你当然可以写其他条件。

   public class MySuggestOracle extends SuggestOracle {

        private List<String> data;

        public MySuggestOracle(List<String> data) {
            this.data = data;
        }

        @Override
        public void requestSuggestions(final Request request, final Callback callback) {
            String userInput = request.getQuery();
            List<Suggestion> suggestions = new LinkedList<Suggestion>();
            for (final String s : data) {
                if (s.startsWith(userInput)) {
                    suggestions.add(new Suggestion() {
                        @Override
                        public String getReplacementString() {
                            return s;
                        }

                        @Override
                        public String getDisplayString() {
                            return s;
                        }
                    });
                }
            }
            Response response = new Response(suggestions);
            callback.onSuggestionsReady(request, response);
        }
    }

【讨论】:

  • 您能帮我了解如何在我的建议框中实现这一点吗?我正在使用从建议框扩展而来的自定义建议框类。
  • 原来我必须将 MultiWordSuggestions 放入我的代码库并注释掉其中的 requestSuggestions 方法,谢谢。
  • 嗨,很高兴您在周末找到了解决方法!
  • 我将无法从 String userInput = request.getQuery(); 获得任何结果;可能是什么问题??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
相关资源
最近更新 更多