WEB开发网
开发学院软件开发Java 使用 Dojo 开发定制 Business Space 小部件,第 4... 阅读

使用 Dojo 开发定制 Business Space 小部件,第 4 部分: 使用通用 REST 处理程序从 iWidget 发出可配置调用

 2010-10-09 08:12:36 来源:WEB开发网   
核心提示: loadRESTConfig 方法调用 _callREST 方法成功加载 JSON 文件, _callREST 方法遍历 JSON 文件中的条目,使用 Dojo 开发定制 Business Space 小部件,第 4 部分: 使用通用 REST 处理程序从 iWidget 发出可配置调用(3),

loadRESTConfig 方法调用 _callREST 方法成功加载 JSON 文件。

_callREST 方法遍历 JSON 文件中的条目。当条目名称和关键名(页面名)相匹配时,它通过连接 restEndPoint(http://<serverip>:<port> part)和来自 JSON 文件的 URI 来构造 REST URL。它还检查是否有与特定 REST 调用相关的 URL 参数和查询参数,并构造相关 URL。

对于一个 POST 请求,它从 parameters 对象读取并设置内容。这些操作完成之后,相应的 XHR 调用被执行。

清单 2. _ callREST ( ) 方法遍历 JSON 文件并构造最终 REST URI

  _callREST:function(response,type,restCallKey,restEndPoint,loadMethod,errorMethod, 
syncFlag,parameters,thisVar) 
 { 
 
 var FUNCTIONNAME = "callREST()";  
  
 var itemsArray = eval(response).items; 
 var _restURL = ""; 
 var urlParameters = ""; 
 var queryParameters = ""; 
 var contentParameter = ""; 
 for (var i = 0; i < itemsArray.length; i++) 
 { 
  var item = itemsArray[i]; 
  var entityName=item.name; 
  if(entityName==this.functionName) 
  { 
  var childrenArray = item.children; 
  for(var j=0;j< childrenArray.length;j++) 
  { 
   var child = childrenArray[j]; 
   var childName=child.name; 
    if(childName==restCallKey){ 
   _restURL = child.restURL; 
   requestTimeout = child.timeout; 
   break; 
    } 
  } 
  } 
 
 } 
 
   
 if(_restURL=="") 
 { 
  console.debug("Error: Unable to retrieve the REST URL"); 
 } else { 
  
  if(parameters!=null) 
  { 
  urlParameters=parameters.urlParameters; 
  queryParameters=parameters.queryParameters; 
  contentParameter=parameters.content; 
  
  if(urlParameters!=null) 
  { 
   for(var i=0;i<urlParameters.count;i++) 
   { 
   key = urlParameters.getKey(i); 
   _restURL=_restURL.replace(key, 
urlParameters.item(key)); 
   } 
  } 
  
 
  if(queryParameters!=null) 
  { 
   queryString="?" 
   for(var i=0;i<queryParameters.count;i++) 
   { 
   if(i>0) 
   { 
    queryString=queryString+"&"; 
   } 
   key = queryParameters.getKey(i); 
   queryString=queryString+key+"= 
"+encodeURIComponent(queryParameters.item(key));   } 
   
   _restURL=_restURL+queryString; 
  } 
  } 
  
  
  console.debug("URL="+restEndPoint+_restURL); 
  var request = { 
  url: restEndPoint+_restURL, 
  handleAs:"json", 
  sync: syncFlag, 
  preventCache: true, 
  mimetype: 'text/json;charset=utf-8', 
  load: dojo.hitch(thisVar, loadMethod), 
  error: dojo.hitch(thisVar, errorMethod) 
  }; 
 
  request.headers={}; 
  if (type == 'GET') 
  { 
  request.headers["Accept"] = "application/json"; 
  dojo.xhrGet(request);  
  } else if (type == "POST" || type == "RAWPOST") { 
  request.postData = contentParameter; 
  request.headers["Content-Type"] = 
"application/json; charset=utf-8"; 
  dojo.rawXhrPost(request); 
  } else if (type == "PUT" || type == "RAWPUT") { 
   request.putData = contentParameter; 
   request.headers["Content-Type"] = 
"application/json; charset=utf-8"; 
   dojo.rawXhrPut(request); 
  }else if(type == "DELETE"){ 
  dojo.xhrDelete(request); 
  } 
 } 
 } 

上一页  1 2 3 4 5 6  下一页

Tags:使用 Dojo 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接