GWT MultiWordSuggestOracle:如何通过后端进行搜索

时间:2012-11-10 10:02:17

标签: gwt

我有关于GWT MultiWordSuggestOracle的问题......

根据我见过的例子,为了用数据填充oracle,你需要在前端加载数据:

private MultiWordSuggestOracle oracleProducts = new MultiWordSuggestOracle();
oracleProducts.clear();
for (ProductDTO product : products) {
    oracleProducts.add(product.getDescription());
}
....
productTextBox = new WatermarkedTextBox();
new SuggestBox(oracleProducts, productTextBox)

只要您的页面中有10个文本字段具有自动填充功能,并且每个文本字段都填充了100多个字符串,那么事情会变得有点慢,尤其是在较慢的互联网连接上。

是否有替代oracle / suggestbox的方法,它不需要预先填充自动填充字段和数据,或者向后端发送请求进行搜索?

3 个答案:

答案 0 :(得分:2)

您必须实现SuggestOracle.requestSuggestions并在那里对您的后端执行RPC / RequestFactory / REST调用。

这是我们通过对后端执行REST调用来实现联系人建议框的方式:

@Override
public void requestSuggestions(final Request request, final Callback callback) {
    SearchCriteria criteria = new SearchCriteria(request.getQuery());
    criteria.setPageSize(request.getLimit());
    RestClientFactory.getContactClient().search(criteria,
            new Result<SearchResult<Contact>>() {

                @Override
                public void onFailure(Throwable caught) {
                }

                @Override
                public void onSuccess(SearchResult<Contact> result) {
                    Response resp = new Response();
                    resp.setMoreSuggestions(!result.isLastPage());
                    resp.setSuggestions(ContactMultiWordSuggestion.fromContacts(result.getList()));
                    callback.onSuggestionsReady(request, resp);
                }
            });
}

答案 1 :(得分:1)

您可以按照自己的方式自由实施SuggestOracle

现已弃用的GWT-Incubator项目有example using RPC,您可以轻松复制和修改。

答案 2 :(得分:0)

尝试对SuggestBox实例使用setLimit()这应该做的工作