wsDataTemplateEdit.jsp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <%@page language="java" pageEncoding="UTF-8"%>
  2. <%@include file="/commons/include/html_doctype.html"%>
  3. <html>
  4. <head>
  5. <%@include file="/commons/include/form.jsp"%>
  6. <title>WEB服务数据模板编辑</title>
  7. <style type="text/css">
  8. html,body{
  9. overflow:auto;
  10. }
  11. .para-info-table th, .para-info-table td{
  12. text-align: center;
  13. height: 32px;
  14. }
  15. .para-info-table td{
  16. padding:5px;
  17. }
  18. input{
  19. width:180px;
  20. }
  21. select{
  22. min-width:185px;
  23. height:24px;
  24. }
  25. </style>
  26. <script type="text/javascript" src="${ctx}/js/util/easyTemplate.js" ></script>
  27. <script type="text/javascript" src="${ctx}/js/hotent/CustomValid.js"></script>
  28. <script type="text/javascript" src="${ctx}/js/javacode/codemirror.js"></script>
  29. <script type="text/javascript" src="${ctx}/js/javacode/InitMirror.js"></script>
  30. <script type="text/javascript">
  31. var editors = InitMirror.options.editors ;
  32. $(function(){
  33. $("select[name='setId']").change(aliasChange).trigger("change");
  34. $('#wsTemplateDataEdit').ajaxForm({success:showResponse });
  35. $("a.done").click(doExecute);
  36. $('a.detail').click(doPrase);
  37. $('a.save').click(function(){
  38. var template = editors[2].editor.getCode();
  39. var script = editors[1].editor.getCode();
  40. $('[name="template"]').val(template);
  41. $('[name="script"]').val(script);
  42. $('#wsTemplateDataEdit').submit();
  43. })
  44. });
  45. function showResponse(r){
  46. var data = eval("("+r+")");
  47. if(data.result){
  48. $.ligerDialog.success(data.message,'成功',function(){
  49. window.location.href = 'list.ht';
  50. });
  51. }
  52. else{
  53. $.ligerDialog.warn(data.message,'出错了');
  54. }
  55. }
  56. //service别名选择事件
  57. function aliasChange(){
  58. var setId = $(this).val();
  59. if(!setId)return;
  60. $("#paraInfo").html("");
  61. if(editors[0]){
  62. editors[0].editor.setCode("");
  63. }
  64. $.post('${ctx}/platform/system/wsDataTemplate/getWsDocumentById.ht',{'setId':setId},function(doc){
  65. if(doc){
  66. var docObj = $.parseJSON(doc);
  67. initInputs(docObj.inputs);
  68. }
  69. else{
  70. $.ligerDialog.error('出错了','出错了');
  71. }
  72. });
  73. };
  74. function initInputs(list){
  75. if(!list||list.length==0)return;
  76. var ary = [];
  77. for(var i=0,c;c=list[i++];){
  78. if(c.bindingType=="2"){
  79. ary.push(c);
  80. }
  81. }
  82. var template = $("#param_tr").val();
  83. var html = easyTemplate(template,ary).toString();
  84. $("#paraInfo").html(html);
  85. };
  86. function doExecute(){
  87. //InitMirror.editor.getCode();
  88. var rtn=$("#wsTemplateDataEdit").form().valid();
  89. if(!rtn) {
  90. $.ligerDialog.warn("请填写参数信息!",'提示');
  91. return false ;
  92. }
  93. var XMLEditor = editors[0].editor;
  94. XMLEditor.setCode('');
  95. $.ligerDialog.waitting('请稍候...');
  96. var url = __ctx+'/platform/bpmCommonWsSet/bpmCommonWsSet/doExecute.ht',
  97. parent = $(".para-info-table"),
  98. setId = $("[name='setId']").val(),
  99. json = [];
  100. $("tbody > tr",parent).each(function(){
  101. var me = $(this),
  102. bindingVal = $("span[name='bindingVal']",me).text(),
  103. javaType = $("input[name='javaType']",me).val(),
  104. testValObj = $("[name='testVal']",me);
  105. var testVal = testValObj.val();
  106. if(testValObj.length > 1){
  107. testVal = [];
  108. testValObj.each(function(){
  109. testVal.push($(this).val());
  110. });
  111. }
  112. json.push({bindingVal:bindingVal,javaType:javaType,testVal:testVal});
  113. });
  114. json = JSON2.stringify(json);
  115. $.post(url,{setId:setId,json:json},function(d){
  116. $.ligerDialog.closeWaitting();
  117. var data = $.parseJSON(d);
  118. if(data.result){
  119. XMLEditor.setCode(data.message);
  120. }
  121. else{
  122. $.ligerDialog.err("提示信息","WEB服务数据模板保存失败!",obj.getMessage());
  123. }
  124. });
  125. };
  126. function doPrase(){
  127. var rtn=$("#wsTemplateDataEdit").form().valid();
  128. if(!rtn){
  129. $.ligerDialog.warn("请填写参数信息!",'提示');
  130. return false ;
  131. }
  132. var templateEditor = editors[2].editor;
  133. var returnXML = editors[0].editor.getCode();
  134. var template = templateEditor.getCode();
  135. var parseScript = editors[1].editor.getCode();
  136. if(returnXML.trim().length<=2){
  137. $.ligerDialog.warn('返回的XML不能为空!','提示');
  138. return false ;
  139. }
  140. if(parseScript.trim().length<=2){
  141. $.ligerDialog.warn('解析脚本不能为空!','提示');
  142. return false ;
  143. }
  144. var requestObj = {};
  145. requestObj.returnXML = returnXML;
  146. requestObj.template = template;
  147. requestObj.parseScript = parseScript;
  148. //templateEditor.setCode(editors[1].editor.getCode());
  149. $.ligerDialog.waitting('请稍候...');
  150. $.post(__ctx+'/platform/system/wsDataTemplate/parse.ht' ,requestObj ,function(d){
  151. $.ligerDialog.closeWaitting();
  152. var data = $.parseJSON(d);
  153. if(data.result){
  154. templateEditor.setCode(data.template);
  155. $('#messageDiv').html(data.message);
  156. var options = {};
  157. options.target = $('#messageDiv');
  158. options.width = '500';
  159. options.height = '400';
  160. $.ligerDialog.open(options);
  161. }
  162. else{
  163. $.ligerDialog.err("提示信息","WEB服务数据模板解析失败!",data.message);
  164. }
  165. });
  166. }
  167. </script>
  168. </head>
  169. <body>
  170. <div class="panel">
  171. <div class="panel-top">
  172. <div class="tbar-title">
  173. <span class="tbar-label">WEB服务数据模板编辑</span>
  174. </div>
  175. <div class="panel-toolbar">
  176. <div class="toolBar">
  177. <div class="group">
  178. <a class="link save"><span></span>保存</a>
  179. </div>
  180. <div class="l-bar-separator"></div>
  181. <div class="group">
  182. <a class="link back" href="list.ht"><span></span>返回</a>
  183. </div>
  184. </div>
  185. </div>
  186. </div>
  187. <div class="panel-body">
  188. <form id="wsTemplateDataEdit" method="post" action="save.ht">
  189. <div class="panel-detail">
  190. <input type="hidden" name="id" value="${wsDataTemplate.id}"/>
  191. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  192. <tr>
  193. <th width="20%">名称:</th>
  194. <td><input type="text" name="name" value="${wsDataTemplate.name}"/></td>
  195. </tr>
  196. <tr>
  197. <th width="20%">别名:</th>
  198. <td>
  199. <select name="setId">
  200. <c:forEach items="${bpmCommonWsSetList}" var="bpmCommonWsSet">
  201. <option value="${bpmCommonWsSet.id}" <c:if test='${bpmCommonWsSet.id == wsDataTemplate.serviceId}'>selected="selected"</c:if>>${bpmCommonWsSet.alias}</option>
  202. </c:forEach>
  203. </select>
  204. <a class="link done" href="javascript:;"><span></span>调用</a>
  205. </td>
  206. </tr>
  207. <tr>
  208. <th width="20%">参数信息:</th>
  209. <td>
  210. <table class="table-detail para-info-table" cellpadding="0" cellspacing="0" border="0">
  211. <thead>
  212. <tr>
  213. <th width="25%">参数名</th>
  214. <th width="20%">参数类型</th>
  215. <th width="30%">参数值</th>
  216. </tr>
  217. </thead>
  218. <tbody id="paraInfo">
  219. </tbody>
  220. </table>
  221. </td>
  222. </tr>
  223. <tr>
  224. <th width="20%">返回的XML:</th>
  225. <td>
  226. <textarea id="xmlScript" name="returnXML" id="returnXML" rows="26" codemirror="true" mirrorheight="200px"></textarea>
  227. </td>
  228. </tr>
  229. <tr>
  230. <th width="20%" rowspan="2">解析脚本:</th>
  231. <td>
  232. <input type="hidden" name="script" value='${wsDataTemplate.script}' />
  233. <textarea id="parseScript" codemirror="true" mirrorheight="200px" rows="26" cols="70">${wsDataTemplate.script}</textarea>
  234. </td>
  235. </tr>
  236. <tr>
  237. <td style="line-height: 30px;"><a class="link detail" href="javascript:;"><span></span>解析</a></td>
  238. </tr>
  239. <tr>
  240. <th width="20%">模板:</th>
  241. <td>
  242. <input type="hidden" name="template" value='${wsDataTemplate.template}' />
  243. <textarea id="templateScript" codemirror="true" mirrorheight="200px" rows="26" cols="70">${wsDataTemplate.template}</textarea>
  244. </td>
  245. </tr>
  246. </table>
  247. </div>
  248. </form>
  249. </div>
  250. </div>
  251. <div class="hidden">
  252. <textarea id="param_tr">
  253. <#list data as obj>
  254. <tr>
  255. <td>
  256. <input type="hidden" name="javaType" value="\${obj.javaType}"/>
  257. <span name="bindingVal">\${obj.bindingVal}</span>
  258. </td>
  259. <#if (obj.javaType == 1)>
  260. <td>字符串</td>
  261. <td>
  262. <input type="text" name="testVal" validate="{required:true}"/>
  263. </td>
  264. <#elseif (obj.javaType == 2)>
  265. <td>数字</td>
  266. <td>
  267. <input type="text" name="testVal" validate="{required:true}"/>
  268. </td>
  269. <#else>
  270. <td>日期</td>
  271. <td>
  272. <input type="text" name="testVal" class="inputText date" validate="{required:true}"/>
  273. </td>
  274. </#if>
  275. </tr>
  276. </#list>
  277. </textarea>
  278. </div>
  279. <div id="messageDiv"></div>
  280. </body>
  281. </html>