注:(1)环境配置:activiti自定义流程之自定义表单(一):环境配置

(2)创建表单:activiti自定义流程之自定义表单(二):创建表单

自定义表单创建成功,要拿到activiti中使用,自然需要让创建activiti流程的人能够看到究竟有那些表单可用,各表单的效果是什么,因此就需要一个展示页面并提供预览功能。同时,增删改查四大功能是基础,自然都是需要的,我这里没有做表单修改,只简单的实现了删除。

我下载的ueditor插件中有基本的创建和预览代码,因此我就参考这些再度修改,而后实现简单的表达列表和预览、删除功能。

一、 表单列表页面formList.html:

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <script type="text/<a href="http://lib.csdn.net/base/18" class="replace_word" title="JavaScript知识库" target="_blank" style="color:#df3434; font-weight:bold;">javascript</a>" charset="utf-8" src="../js/<a href="http://lib.csdn.net/base/22" class="replace_word" title="jQuery知识库" target="_blank" style="color:#df3434; font-weight:bold;">jquery</a>-1.7.2.min.js?2023"></script>
  8. <link href="../my_css/a.css" rel="stylesheet" type="text/css" />
  9. </head>
  10. <body style="margin:0">
  11. <!-- fixed navbar -->
  12. <!-- Docs page layout -->
  13. <script type="text/javascript" charset="utf-8" src="../my_js/formList.js"></script>
  14. <div style="width:100%;height:60px;background-color:#ccf;border:1px solid blue;text-decoration:none">
  15. <img src="../images/activiti.png" style="width:20%;height:98%;overflow:hidden;float:left"/>
  16. <ul style="margin-left:30px;margin-top:10px; padding: 0px; font-size: 32px; width:60%;overflow:hidden;float:left">
  17. <li><a href="#" onclick="toAdd();">新增表单</a></li>
  18. <li> | </li>
  19. <li><a href="#" onclick="formList();">表单列表</a></li>
  20. <li> | </li>
  21. <li><a href="#" onclick="createModel();">创建模型</a></li>
  22. </ul>
  23. </div>
  24. <div id="idv1" style="width:100%;position: absolute;height:auto">
  25. <div id="formDiv" style="width:88%;height:auto;position:relative;float:left;margin-left:10px;margin-top:10px;">
  26. <table id="ta1" style="width:100%;height:auto;text-align:center" border="1" cellpadding="0" cellspacing="0">
  27. <tr style="background-color:#ccc">
  28. <td style="width:100px;height:30px;font-size:25px">表单Id</td>
  29. <td style="width:100px;height:30px;font-size:25px">表单标题</td>
  30. <td style="font-size:25px">表单代码</td>
  31. <td style="width:100px;height:30px;font-size:25px">操作表单</td>
  32. </tr>
  33. </table>
  34. </div>
  35. </div>
  36. <div id="div2" style="top:100px;left:20%;width:60%;height:400px;position:absolute;background-color:grey;display:none;">
  37. </div>
  38. </body>
  39. </html>

二、 js文件formList.js:

  1. function toAdd(){
  2. window.location.href="../";
  3. };
  4. function formList(){
  5. window.location.href="./formList.html";
  6. };
  7. $(document).ready(function(){
  8. $.ajax({
  9. type: 'POST',
  10. url : '/webFormTest/findForms.do',
  11. dataType : 'json',
  12. async:false,
  13. success : function(data){
  14. //alert("保存成功");
  15. console.log(data);
  16. for(var i=0;i<data.length;i++){
  17. var form=data[i];
  18. console.log(form);
  19. var tables = document.getElementById("ta1");
  20. var tr = document.createElement("tr");
  21. var td0=document.createElement("td");
  22. var td1=document.createElement("td");
  23. var td2=document.createElement("td");
  24. var td3=document.createElement("td");
  25. td0.innerText=form.formId;
  26. td1.innerText=form.formType;
  27. td2.innerText=form.form;
  28. td2.setAttribute("id",i);
  29. var a1=document.createElement("a");
  30. var node1 = document.createTextNode(" 删除  ");
  31. a1.appendChild(node1);
  32. a1.setAttribute("href","#");
  33. a1.setAttribute("id","a1"+i);
  34. a1.onclick=function(){
  35. var id=this.id;
  36. var id1=id.substring(2);
  37. var formId=data[id1].formId;
  38. //console.log(document.getElementById(id).innerText);
  39. //console.log();
  40. //先删除,后跳转
  41. $.ajax({
  42. type: 'POST',
  43. url : '/webFormTest/deleteForm.do',
  44. dataType : 'json',
  45. async:false,
  46. data:{"formId":formId},
  47. success : function(){
  48. window.location.href="./formList.html";
  49. }
  50. })
  51. };
  52. var a2=document.createElement("a");
  53. var node2 = document.createTextNode(" 预览  ");
  54. a2.appendChild(node2);
  55. a2.setAttribute("href","#");
  56. a2.setAttribute("id","a2"+i);
  57. a2.onclick=function(){
  58. //console.log();
  59. //console.log(data);
  60. var id=this.id;
  61. var formId=id.substring(2);
  62. var form=data[formId].form;
  63. form.replace("{","");
  64. form.replace("}","");
  65. form.replace("|","");
  66. //console.log(document.getElementById(id).innerText);
  67. win_parse=window.open('','','width=800,height=400,alwaysRaised=yes,top=100,left=200');
  68. var str='<div style="width:500px;height:300px;border:1px solid grey">'+form+'</div>';
  69. win_parse.document.write(str);
  70. win_parse.focus();
  71. //document.getElementById("div2").write(str);
  72. };
  73. td3.appendChild(a1);
  74. td3.appendChild(a2);
  75. tr.appendChild(td0);
  76. tr.appendChild(td1);
  77. tr.appendChild(td2);
  78. tr.appendChild(td3);
  79. tables.appendChild(tr);
  80. }
  81. }
  82. })
  83. })

三、 后台代码:
Controller类中相关方法:

  1. @RequestMapping(value = "/findForms.do", method = RequestMethod.POST)
  2. @ResponseBody
  3. public Object findForms() {
  4. List<Map<String, String>> list = formService.findForms();
  5. return list;
  6. }
  7. @RequestMapping(value = "/deleteForm.do", method = RequestMethod.POST)
  8. @ResponseBody
  9. public Object deleteForm(HttpServletRequest request) {
  10. String formIde = request.getParameter("formId");
  11. formService.deleteForm(formIde);
  12. return null;
  13. }

Service类相关方法:

  1. public Object addForm(String formType, String string);
  2. public void deleteForm(String formId);

serviceImp实现:

  1. /**
  2. * 查询表单列表
  3. *
  4. * @author:tuzongxun
  5. * @Title: findForms
  6. * @Description: TODO
  7. * @param @return
  8. * @date Mar 28, 2016 4:29:58 PM
  9. * @throws
  10. */
  11. public List<Map<String, String>> findForms() {
  12. Connection connection = this.getDb();
  13. Statement statement;
  14. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  15. try {
  16. statement = connection.createStatement();
  17. ResultSet resultSet = statement
  18. .executeQuery("select * from formtest");
  19. while (resultSet.next()) {
  20. Map<String, String> map = new HashMap<String, String>();
  21. String formString = resultSet.getString(2);
  22. // resultSet.getString(2);
  23. System.out.println("formString:" + formString);
  24. map.put("formId", resultSet.getString(1));
  25. map.put("formType", resultSet.getString(2));
  26. map.put("form", resultSet.getString(3));
  27. list.add(map);
  28. }
  29. ;
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. return list;
  34. }
  35. /**
  36. * 删除表单
  37. *
  38. * @author:tuzongxun
  39. * @Title: addForm
  40. * @Description: TODO
  41. * @param @param formType
  42. * @param @param string
  43. * @param @return
  44. * @date Mar 28, 2016 4:30:18 PM
  45. * @throws
  46. */
  47. public void deleteForm(String formId) {
  48. try {
  49. Connection connection = this.getDb();
  50. PreparedStatement ps = connection
  51. .prepareStatement("delete from  formtest where formId=?");
  52. ps.setString(1, formId);
  53. ps.executeUpdate();
  54. connection.close();
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }

列表页面效果如图:

预览效果如图:

activiti自定义流程之自定义表单(三):表单列表及预览和删除的更多相关文章

  1. activiti自定义流程之自定义表单(二):创建表单

    注:环境配置:activiti自定义流程之自定义表单(一):环境配置 在上一节自定义表单环境搭建好以后,我就正式开始尝试自己创建表单,在后台的处理就比较常规,主要是针对ueditor插件的功能在前端进 ...

  2. FileUpload控件实现单按钮图片自动上传并带预览显示

    FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理:   FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调 ...

  3. activiti自定义流程之自定义表单(一):环境配置

    先补充说一下自定义流程整个的思路,自定义流程的目的就是为了让一套代码解决多种业务流程,比如请假单.报销单.采购单.协作单等等,用户自己来设计流程图. 这里要涉及到这样几个基本问题,一是不同的业务需求, ...

  4. 【转】玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo

    http://blog.csdn.net/yanzi1225627/article/details/33339965 GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而 ...

  5. Django文件上传三种方式以及简单预览功能

    主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...

  6. layui文件单文件和多文件的上传、预览以及删除和修改

    活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ...

  7. 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo

    GLSurfaceView是OpenGL中的一个类,也是能够预览Camera的,并且在预览Camera上有其独到之处. 独到之处在哪?当使用Surfaceview无能为力.痛不欲生时就仅仅有使用GLS ...

  8. JS实现上传图片的三种方法并实现预览图片功能

    地址:http://www.jb51.net/article/118660.htm js HTML5拖拽图片预览 地址:http://www.jb51.net/article/88803.htm js ...

  9. activiti自定义流程之整合(三):整合自定义表单创建模型

    本来在创建了表单之后应该是表单列表和预览功能,但是我看了看整合的代码,和之前没有用angularjs的基本没有什么变化,一些极小的变动也只是基于angularjs的语法,因此完全可以参考之前说些的表单 ...

随机推荐

  1. discuz如何设置游客可以浏览板块,但是不能查看帖子内容呢?

    后台 ,将用户组 --游客 阅读权限设置为0 QQ快捷登陆不正常 ,在首页,点击QQ快捷登陆,并不跳转到QQ认证页面,而是要输入用户名.密码.验证码等. 但是如果输入的是你想新注册的用户名等信息,却不 ...

  2. JavaWeb学习记录(十九)——jsp标签库

    1.out标签 <%        //局部变量        String name="zsf>&<zz";        pageContext.se ...

  3. scala言语基础学习八

  4. Android-Universal-Image-Loader开源项目的简要说明及使用实例

    本文转载于:http://www.cnblogs.com/hsx514/p/3460179.html 一.核心类的说明及相关参数的说明 ImageLoaderConfiguration 1.作用:为I ...

  5. JVM 虚拟化

    http://www.infoq.com/cn/news/2015/05/java20-multitenant-jvm http://2016.qconshanghai.com/presentatio ...

  6. 主成分分析(PCA)

    主成分分析(principal component analysis)是一种常见的数据降维方法,其目的是在"信息"损失较小的前提下,将高维的数据转换到低维,从而减小计算量.PCA的 ...

  7. 掌握 Ajax,第 1 部分: Ajax 入门简介

    转:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作 ...

  8. Sklearn库例子4:分类——Lasso分类例子

    Lasso回归: #-*- encoding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn.met ...

  9. node.js BootStrap安装

    最近想用Bootstrap开发项目,以便使用其丰富的资源: 捯饬了一下nodejs的安装和配置:windows下弄起来还是比较狗屎的,两三天下班时间才弄好: http://xiaoyaojones.b ...

  10. EDIUS和VEGAS哪个更好用

    随着数字化电视系统发展的步伐日趋加快,计算机技术逐步渗透到广播电视的各个领域,非线性编辑系统在广播电视行业内占据越来越重要的地位,而且正向多样化 发展.因此,非线性编辑技术的操作应用对于编辑人员有着非 ...