我有一个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();
哪个更好?我倾向于后者......一个空的物体。
当我有更多信息时,我会更新这个问题。谢谢!
答案 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");