我有关于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的方法,它不需要预先填充自动填充字段和数据,或者向后端发送请求进行搜索?
答案 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()这应该做的工作