java动态表单设计解析

于雷劈网的表单设计器扩展,java实现后台解析(插件内容和字段和原版有一定改变)。致敬雷劈网.http://formdesign.leipi.org/ 

全部代码地址在 https://gitee.com/jjxliu306/deform

解析全部由java处理,时间紧迫,代码实现上不考虑太多的效率问题。原有控件部分已经屏蔽,如果大家感兴趣可以联系我一起加进来,另外如果控件有需要新增也可以联系本人([email protected])。

数据表两个:

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:

 

最后来几张示例项目的全图:



 

 

猜你喜欢

转载自jjxliu306.iteye.com/blog/2414331