1

在过去的 5 个月里,我们一直在设计 GWT 原型并建立基础设施。我们将 GXT 用于具有 MVP 和命令模式实现的小部件。但是,我们目前正在寻求使用来自实时数据库的自动建议对 ComboBox 进行峰值处理。我想在 MVP 和命令模式实现的框架中执行此操作。有任何人有任何想法如何去做吗?

4

3 回答 3

2

我使用基于命令模式建模的通用 DispatchDataProxy 解决了这个问题。感谢您的链接,但 GXT 文档还有很多不足之处,尽管该框架非常好和酷。

我将在这里发布代码`public class DispatchDataProxy implements 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;
}

}`

希望它有用。也会欣赏一些评论

于 2010-12-16T11:01:13.727 回答
0

你看过这里吗?

http://www.sencha.com/examples-2/explorer.html#advancedcombobox

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

于 2010-12-03T20:59:10.053 回答
0

我找到了简单组合框的解决方案,覆盖 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;
            }
        };

    }

现在,当您添加到组合框默认值(未在商店中定义)时,getValue 方法返回此值 - 不为空。

于 2013-03-22T09:56:22.113 回答