1

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&limit=10&sortField=null&offset=0&sortDir=NONE&filters=[com.extjs.gxt.ui.client.data.BaseStringFilterConfig@3abbafc7]

过滤器=[com.extjs.gxt.ui.client.data.BaseStringFilterConfig@3abbafc7] ???

如何将此行转换为请求 url?

谢谢!

4

2 回答 2

1

听起来 BaseStringFilterConfig 中缺少 toString 方法,以便按照您的描述使用它。

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

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

例如,您可以使用私有静态最终类 BaseStringFilterConfigWithStringRepresentation extends BaseStringFilterConfig {

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

}

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

于 2012-09-06T16:10:03.303 回答
0

在 HttpProxy 中有这个方法

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

因此,如果您使用 setWriter 方法为您的 HttpProxy 定义了一个 DataWriter,它将被使用,如果没有,则使用 toString 方法。有一个 DataWriter - UrlEncodingWriter 我相信你在这里需要它

于 2013-02-07T23:17:30.097 回答