【问题标题】:SmartGWT TransformResponse handling nullSmartGWT TransformResponse 处理 null
【发布时间】:2014-03-07 06:46:36
【问题描述】:

我有一个 SmartGWT 4.0 应用程序,我有一个正常工作的 RESTful Web 服务(Spring MVC 控制器),并使用标准 DataSource 来覆盖 transformResponse。

当我将 ID 传递给控制器​​时,DataSource 工作得很好,我得到了 JSON 数据,它工作得很好。问题是当我从 restful web 服务返回 NULL 时。

对于 SmartGWT 数据源,我是否应该返回一个空值?如果我将一个 id 传递给我的网络服务,但它在数据库中找不到匹配的记录,我是否应该从我的网络服务返回一个空值,在这种情况下,将没有 JSON,只有一个空字符串(“”)。

所以,我可以更新我的 transformResponse 来处理这个问题:

  ListGridRecord[] recordArray = new ListGridRecord[]{};
  dsResponse.setData(recordArray);
  dsResponse.setStartRow(0);
  dsResponse.setEndRow(0);
  dsResponse.setStatus(RPCResponse.STATUS_SUCCESS);
  dsResponse.setTotalRows(0);
  data = "{}";

但这仍然会产生一个错误,我想避免。

或者,另一种可能性是返回一个空对象。因此,如果数据库中有对象,则将填充该对象。如果没有匹配的数据,那么我可以从 Web 服务返回一个空对象,如下所示:

 MyObject myObject = new MyObject();

哪个更好?我倾向于后者……一个空的物体。

当我有更多信息时,我会更新这个问题。谢谢!

【问题讨论】:

    标签: json web-services rest smartgwt


    【解决方案1】:

    在 DS Response 中设置一个属性并在客户端读取它以检查是否未找到结果。

    请试试这个代码:

    服务器端:

    import com.isomorphic.datasource.DSResponse;
    
    DSResponse dsResponse = new DSResponse(DSResponse.STATUS_SUCCESS);
    dsResponse.setProperty("json_string", null);
    dsResponse.setTotalRows(0);
    

    客户端:

    import com.smartgwt.client.data.DSResponse;
    
    String json=response.getAttribute("json_string");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2014-06-19
      相关资源
      最近更新 更多