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

GWT MultiWordSuggestOracle:如何通过后端进行搜索,gwt,Gwt,我有一个关于GWT MultiWordSuggestOracle的问题 根据我看到的示例,为了用数据填充oracle,您需要在前端加载数据: private MultiWordSuggestOracle oracleProducts = new MultiWordSuggestOracle(); oracleProducts.clear(); for (ProductDTO product : products) { oracleProducts.add(product.getDescr

我有一个关于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是否有一种替代方案,它不需要用数据预填充autocomplete字段,或者向后端发送请求以执行搜索?

尝试对suggestbox实例使用setLimit(),这应该可以完成这项工作

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

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


现已弃用的GWT孵化器项目有一个可以轻松复制和调整的工具。

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


现在已弃用的GWT孵化器项目有一个可以轻松复制和调整的方法。

您必须实现
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);
                }
            });
}
@覆盖
公共无效请求建议(最终请求、最终回调){
SearchCriteria=新的SearchCriteria(request.getQuery());
criteria.setPageSize(request.getLimit());
RestClientFactory.getContactClient().search(条件,
新结果(){
@凌驾
失败时的公共无效(可丢弃){
}
@凌驾
成功时公开作废(搜索结果){
Response resp=新响应();
resp.setMoreSuggestions(!result.isLastPage());
响应设置建议(ContactMultiWordSuggestion.fromContacts(result.getList());
callback.onSuggestionsReady(请求、响应);
}
});
}

您必须实现
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);
                }
            });
}
@覆盖
公共无效请求建议(最终请求、最终回调){
SearchCriteria=新的SearchCriteria(request.getQuery());
criteria.setPageSize(request.getLimit());
RestClientFactory.getContactClient().search(条件,
新结果(){
@凌驾
失败时的公共无效(可丢弃){
}
@凌驾
成功时公开作废(搜索结果){
Response resp=新响应();
resp.setMoreSuggestions(!result.isLastPage());
响应设置建议(ContactMultiWordSuggestion.fromContacts(result.getList());
callback.onSuggestionsReady(请求、响应);
}
});
}

仍然需要我将所有字符串加载到oracleProduct中。我正在寻找一个解决方案,我不必预加载任何东西,其中“搜索请求”被发送到后端处理搜索。不确定这是否会降低oracle的搜索能力。它仍然需要我将所有字符串加载到oracleProduct中。我正在寻找一个解决方案,我不必预加载任何东西,其中“搜索请求”被发送到后端处理搜索。不确定这是否会降低oracle的搜索能力。我知道必须有一种方法让后端进行搜索,将所有内容加载到前端感觉不太好。我知道必须有一种方法让后端进行搜索,将所有内容加载到前端感觉不太好。