您的位置:首页 > 其它

Smarclient框架Datasource与服务端交互数据格式

2012-08-21 10:08 429 查看

Datasource与服务端交互数据格式

Datasource和后端交互一律采用json格式。

请求格式:

Fetch 自动分页:

Request URL:(get)
http://localhost:41088/servlets-examples/AServlet?_operationType=fetch&_startRow=0&_endRow=6&_textMatchStyle=exact&_componentId=countGrid&_dataSource=countryDS&isc_metaDataPrefix=_&isc_dataFormat=json
Request Method:get

Get参数
_operationType:fetch
_startRow:0
_endRow:6
_textMatchStyle:exact
_componentId:countGrid
_dataSource:countryDS
isc_metaDataPrefix:_
isc_dataFormat:json

Request URL:(post)
http://localhost:41088/servlets-examples/AsServlet?isc_dataFormat=json
Request Method:post

Get参数
isc_dataFormat:json
post参数
{ "dataSource":"countryDS",
"operationType":"fetch", "startRow":0, "endRow":5, "textMatchStyle":"exact", "componentId":"countGrid", "data":{ "com_zte_dap_commandcode":"10110" }, "oldValues":null }

手工分页: http://localhost:41088/servlets-examples/AsServlet?pageSize=5&pageNo=1&_operationType=fetch&_startRow=0&_endRow=75&_textMatchStyle=exact&_componentId=countGrid&_dataSource=countryDSManual&isc_metaDataPrefix=_&isc_dataFormat=xml
Request Method:get

Get参数
_operationType:fetch
_startRow:0
_endRow:6
_textMatchStyle:exact
_componentId:countGrid
_dataSource:countryDS
isc_metaDataPrefix:_
isc_dataFormat:json
pageNo:1
pageSize:5

Add

Request URL: (post) http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST

Get参数:
isc_dataFormat:json

post参数

{ "dataSource":"countryDS", "operationType":"add", "data":{ "id":"99", "name":"zy" }, "oldValues":null }

Update

Request URL(post): http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST

Get参数:
isc_dataFormat:json

post参数

{ "dataSource":"countryDS", "operationType":"update", "data":{ "id":"99", "zongying":"zy2" }, "oldValues":null }

Remove

Request URL: (post) http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST

Get参数:
isc_dataFormat:json

post参数

{ "dataSource":"countryDS", "operationType":"remove", "componentId":"countGrid", "data":{ "id":"UK", "zongying":"zy2"
}, "oldValues":null }

响应格式:

正确响应:
Fetch
自动分页:
response: {status: '0',startRow:
'0',dRow: '5',totalRows: '10',
data: [{id:
'0',name: 'name0'}, {id: '1',name:
'name1'}, {id: '2',name: 'name2'},
{id: '3',name: 'name3'},
{id: '4',name: 'name4'}, {id:
'5',name: 'name5'
}]}};

手工分页:
response: {status: '0',startRow:
'0',endRow: '5',totalRows: '5',totalPages:'5',realTotalRows:'23',
data: [{id: '0',name:
'name0'}, {id: '1',name: 'name1'},
{id: '2',name: 'name2'}, {id:
'3',name: 'name3'}, {id: '4',name:
'name4'}, {id: '5',name: 'name5'
}]}};

Add,update,remove


response: {status: '0',data:
[{id: '0',name: 'name0'}]]}};

返回一般错误


response: {status: '-1',data:
“error mesdsage”}

返回数据验证错误
{"response": {"endRow":
0,"totalRows": 0,"status": -4,"startRow": 0,"data":
{"errorMessage": "A error on field1"}}}
或者

{response: {status:
-4,errors: {field1: {errorMessage: "A validation
error on field1"},field2: {errorMessage:
"A validation error on field2"}}}}

使用示例

//定义数据源

varcountryDS
= isc.RestDataSource.create({
ID:"countryDS",
dataFormat:"json",
//recordXPath:
"//country",
fetchDataURL:"/servlets-examples/AsServlet",
addDataURL:"/servlets-examples/AsServlet",
updateDataURL:"/servlets-examples/AsServlet",
removeDataURL:"/servlets-examples/AsServlet",
selectionAppearance:"checkbox",

operationBindings: [{
operationType:"fetch",
dataProtocol:"getParams"
//dataProtocol:
"postMessage"
}, {
operationType:"add",
dataProtocol:"postMessage"
}, {
operationType:"update",
dataProtocol:"postMessage"

}, {
operationType:"remove",
dataProtocol:"getParams"

}],

fields: {
id: {
name:"id",
title:"Code",
primaryKey:true,
required:true
},
name: {
name:"name",
title:"Country",
canEdit:true
}
},
handleError:function(response,
request){
//如果服务端返回错误
if
(response.status <
0) {
var
errMsg = null;
//-90系统级别错误:找不到服务器(httpResponseCode/
xmlHttpRequest.status :0),或者找不到资源(404)
//-1服务端servlet处理后,返回系统级别错误,不可恢复错误(200)。
//-4服务端servlet处理后,回数据校验错误(200)
switch
(response.status) {
case-90:
errMsg = response.data.data;
break;
case-1:
errMsg = response.data
break;
case-4:
default:

}

//Canvas.getById(request.componentId
).data=null;
isc.warn('自定义错误处理信息:\n'
+ errMsg);
countGrid.data =null;
returnfalse;//是否屏蔽默认错误处理
}
//response.status>=0处理

}
})
//定义数据绑定控件,并且绑定到数据源

var
countGrid = isc.ListGrid.create({
ID:"countGrid",
width: 500,
height: 100,
alternateRecordStyles:true,
dataSource: countryDS,//绑定到数据源
autoFetchData:false,
autoSaveEdits:false,

});

//查询数据
var
actButton = isc.Button.create({
left: 200,
top: 120,
width: 150,
title:"fetch
data",
click:function(){
countGrid.invalidateCache();
countGrid.fetchData({
com_zte_dap_commandcode:'10110'
});
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: