SmartGWT TransformResponse处理null

时间:2014-02-26 18:55:20

标签: json web-services rest smartgwt

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

当我将ID传递给控制器​​时,DataSource工作得很好,我得到的JSON数据恢复正常。问题是当我从restful web服务中获得NULL时。

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

所以,我可以更新我的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();

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

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

1 个答案:

答案 0 :(得分: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");