GXT - 如何将网格过滤器参数添加到请求URL(获取参数)?

时间:2012-09-03 21:55:17

标签: java gwt gxt

GXT - 如何将网格过滤器参数添加到请求URL(获取参数)?

final PagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, reader) {  
  @Override  
  protected Object newLoadConfig() {  
    BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();  
    return config;  
  }  
};  

=

请求网址:http://localhost/index.php?action = getLines&amp; limit = 10&amp; sortField = null&amp; offset = 0&amp; sortDir = NONE&amp; filters = [com.extjs.gxt.ui.client.data .BaseStringFilterConfig @ 3abbafc7]

filters = [com.extjs.gxt.ui.client.data.BaseStringFilterConfig@3abbafc7] ???

如何为请求网址转换此行?

谢谢!

2 个答案:

答案 0 :(得分:1)

听起来像BaseStringFilterConfig中缺少toString方法,以便在您描述时使用它。

确保使用定义toString方法的 BaseStringFilterConfig - 为此,您必须手动覆盖它。

创建一个扩展 BaseStringFilterConfig 类的类,并覆盖toString()方法。

作为一个例子,你可以使用     private static final class BaseStringFilterConfigWithStringRepresentation extends BaseStringFilterConfig {

    @Override
    public String toString() {
        return "[field=" + getField() + "| comparison=" + 
                    getComparison() + " | type=" + getType() + " | value=" +
                    getValue() + "]";
    }

}

小心不要使用逗号作为分隔符,因为过滤器字段已经以逗号分隔列表形式出现。你必须以某种方式在服务器端解析它,然后返回正确的结果。

答案 1 :(得分:0)

在HttpProxy中 有这种方法

  protected String generateUrl(C loadConfig) {
    if (writer != null) {
      return writer.write(loadConfig);
    } else {
      if (loadConfig == null) {
        return "";
      }
      return loadConfig.toString();
    }
  }

因此,如果您已使用该方法为HttpProxy定义了DataWriter 如果没有使用toString方法,将使用setWriter。 我相信你需要一个DataWriter - UrlEncodingWriter