0

我对 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 / 建议框不需要使用数据预先填充自动完成字段或向后端发送请求以进行搜索的替代方法?

4

3 回答 3

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);
                }
            });
}
于 2012-11-10T16:37:47.007 回答
1

你可以自由地实现SuggestOracle你想要的方式。

现在已弃用的 GWT-Incubator 项目有一个使用 RPC 的示例,您可以轻松复制和调整它。

于 2012-11-10T10:45:14.450 回答
0

尝试将 setLimit() 用于 SuggestBox 实例,这应该可以完成工作

于 2012-11-10T10:10:14.220 回答