java动态表单设计解析
于雷劈网的表单设计器扩展,java实现后台解析(插件内容和字段和原版有一定改变)。致敬雷劈网.http://formdesign.leipi.org/
全部代码地址在 https://gitee.com/jjxliu306/deform
解析全部由java处理,时间紧迫,代码实现上不考虑太多的效率问题。原有控件部分已经屏蔽,如果大家感兴趣可以联系我一起加进来,另外如果控件有需要新增也可以联系本人(jjxliu306@163.com)。
数据表两个:
drop table if exists form; -- 自定义的工单 create table form( form_id int auto_increment primary key , form_name varchar(255), template text, -- 页面编辑好的原始html html text , -- 反解析出来的页面html代码(设计到定义的select lictrl等控件要解析出展示代码) data text, -- 自定义的各个控件字段的jsonarray格式存储 parse text , fields integer, crtime timestamp, modify_time timestamp );
drop table if exists entry; -- 保存各个工单填写的记录 create table entry( id int auto_increment primary key , form_id int , -- 填写的动态工单ID value text, -- 实际为json格式,存储此次填写的动态表单数据 crtime timestamp , modify_time timestamp );
动态表单绘制完毕后由后台解析并存储到数据库,后续每次发起的工单通过form中的html在页面进行绘制。工单填写完毕通过页面将form表单内容jsonobject之后交由后台验证并保存。
以下是目前此项目的一些截图。
1、动态表单新增
2、动态表单预浏览
3、填写已设置动态表单的工单
4、工单浏览查看(readonly)
功能实现:
雷劈网动态表单中原有的字段大部分均添加了一些修改,譬如非空(notnull),将name和title区分开,增加select,radios,checkbox选项的数据从填写的url中通过ajax获取等。详细如下:
1、 针对text,textarea,select,checkboxs,listctrl,datepicker(自增控件)添加notnull非空选项,勾选此选项后,后续数据输入均会在后端进行非空验证(针对text中int,email等类型也会进行格式验证).
2、 listctrl屏蔽单位、合计、默认值,但增加每个列字段的非空验证选项(针对字段的int类型也会验证)。
3、 对所有控件中name和title区分出来,其中name主要用来后续表单存储结果中作为key,title用来后续表单验证中进行提示使用。
4、 select,radios,checkbox控件中选项数据均通过配置url从后台获取数据显示。
各个控件编辑图如下:
text:
textarea:
radio:
checkboxs:
select:
datepicker:
listctrl:
最后来几张示例项目的全图: