Combobox GXT中的动态自动建议组合框

Combobox GXT中的动态自动建议组合框,combobox,autocomplete,gxt,Combobox,Autocomplete,Gxt,在过去的5个月里,我们一直在制作GWT原型并建立基础设施。我们将GXT用于具有MVP和命令模式实现的小部件。然而,我们目前正在寻找从一个实时数据库中使用autosuggest在一个组合框上做一个峰值。我希望在MVP和命令模式实现的框架中实现这一点。有人知道怎么做吗 你看过这里吗 他们表现出相似的东西。GXT的问题是,您最好使用他们的DataProxy,因为您需要设置ModelData实例。我使用基于命令模式建模的通用DispatchDataProxy解决了这个问题。感谢您提供的链接,但是GXT

在过去的5个月里,我们一直在制作GWT原型并建立基础设施。我们将GXT用于具有MVP和命令模式实现的小部件。然而,我们目前正在寻找从一个实时数据库中使用autosuggest在一个组合框上做一个峰值。我希望在MVP和命令模式实现的框架中实现这一点。有人知道怎么做吗

你看过这里吗


他们表现出相似的东西。GXT的问题是,您最好使用他们的DataProxy,因为您需要设置ModelData实例。

我使用基于命令模式建模的通用DispatchDataProxy解决了这个问题。感谢您提供的链接,但是GXT文档还有很多需要改进的地方,尽管该框架非常漂亮和酷

我将在这里发布代码`公共类DispatchDataProxy实现DataProxy>{

@Inject
private DispatchAsync dispatch ;//= new StandardDispatchAsync(new DefaultExceptionHandler());

@Override
public void load(DataReader<ListLoadResult<X>> reader, Object loadConfig, final AsyncCallback<ListLoadResult<X>> callback) {
    if (loadConfig instanceof BasePagingLoadConfig) {
        BasePagingLoadConfig a = (BasePagingLoadConfig) loadConfig;
        Map<String, Object> map = a.getProperties();
        Object data = map.get("query");

        XCommand action = new XCommand();
        action.setX((String) data);

        dispatch.execute(action, new AsyncCallback<XResult>() {

            @Override
            public void onFailure(Throwable arg0) {
                //Log.debug("Some error:" + arg0.getMessage());
                callback.onFailure(arg0);
            }

            @Override
            public void onSuccess(XResult arg0) {
                ListLoadResult<X> list = arg0.getList();
                callback.onSuccess(list);
            }
        });
    }
}

public DispatchAsync getDispatch() {
    return dispatch;
}

public void setDispatch(DispatchAsync dispatch) {
    this.dispatch = dispatch;
}
@Inject
private DispatchAsync dispatch;/=new StandardDispatchAsync(new DefaultExceptionHandler());
@凌驾
公共无效加载(DataReader读取器、对象loadConfig、最终异步回调){
if(BasePagingLoadConfig的loadConfig实例){
BasePagingLoadConfig a=(BasePagingLoadConfig)loadConfig;
Map Map=a.getProperties();
对象数据=map.get(“查询”);
XCommand操作=新的XCommand();
action.setX((字符串)数据);
execute(action,new AsyncCallback(){
@凌驾
失败时公共无效(可丢弃arg0){
//调试(“一些错误:+arg0.getMessage());
callback.onFailure(arg0);
}
@凌驾
成功时公共无效(XResult arg0){
ListLoadResult list=arg0.getList();
callback.onSuccess(列表);
}
});
}
}
公共调度异步getDispatch(){
退货派送;
}
公共无效setDispatch(DispatchAsync dispatch){
this.dispatch=调度;
}
}`


希望它有用。如果您能提供一些意见,我将不胜感激。

我找到了简单组合框的解决方案,覆盖getValue方法:

    public SimpleComboBox<String> createEditableSimpleComboBox() {
        return new SimpleComboBox<String>() {

            @Override
            public SimpleComboValue<String> getValue() {
                SimpleComboValue<String> v = super.getValue();
                String raw = getRawValue();
                if ((v == null || v.getValue() == null) && raw != null && !raw.isEmpty()) {
                    v = new SimpleComboValue<String>(raw){
                        private static final long serialVersionUID = 1L;
                    };
                }
                return v;
            }
        };

    }
public simplembobox createeditablesimplembobox(){
返回新的simplembobox(){
@凌驾
公共SimpleComboValue getValue(){
SimpleComboValue v=super.getValue();
字符串raw=getRawValue();
if((v==null | | v.getValue()==null)&&raw!=null&&raw.isEmpty()){
v=新的SimpleComboValue(原始){
私有静态最终长serialVersionUID=1L;
};
}
返回v;
}
};
}
现在,当您向组合框添加默认值(未在存储中定义)时,getValue方法将返回此值-不为null