在过去的5个月里,我们一直在对GWT进行原型设计并建立基础设施。我们正在使用GXT作为MVP和Command Pattern实现的小部件。但是,我们目前正在寻找使用实时数据库中的autosuggest对ComboBox进行加标。我想在MVP和Command模式实现的框架中这样做。任何人都有任何想法如何去做这个?
答案 0 :(得分:2)
我使用在命令模式上建模的通用DispatchDataProxy解决了这个问题。感谢您的链接,但GXT文档还有很多不足之处,尽管该框架非常好用而且很酷。
我将在这里发布代码`public class 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;
}
}`
希望它有用。也会欣赏一些评论
答案 1 :(得分:0)
http://www.sencha.com/examples-2/explorer.html#advancedcombobox
他们表现出类似的东西。 GXT的问题是你最好使用他们的DataProxy,因为你需要设置一个ModelData实例。
答案 2 :(得分: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将返回此值 - 不为null。