客户总是隔段时间就增加个小功能,真的挺烦的。做个自定义表单,可以为以后省很多事。但是技术,思路我都不大清楚。希望各位大侠给个意见!

解决方案 »

  1.   

    是指动态生成表单吗?如果是的话,那恭喜你,很复杂。第一是数据库设计。如果是动态表单的话,数据库有两种设计方法,一是使用表格的一行里面很多额外的列来存储预计不到的信息,类似这样"Table(pk_id, value1, value2, value3...value20)根据需要预留的数据数量决定列数;另一种是用纵向表格来存储,这样设计不用预留额外存储空间,但表格的格式变成"Table(field_name, field_value)",这样的缺陷是查询和存储不方便,而且速度会受很大影响,无法添加索引,数据量大的时候基本就是杯具+餐具。如果数据名称都不确定的话,那就更凄凉,谁知道textfield_value1对应的应该是contact_phone_number?那数据库里还需要额外的信息来进行说明。最后想输出的时候,比如说打印报告,最简单的一份报告也要进行至少2-3个表格的JOIN,而且是没有索引那种。如果多用户,每个用户界面都要求不同,那……第二是表单外观设计。表单上输入原件的类型,原件名称,数据类型,输入限制,摆放位置等等一系列信息,都需要存储到数据库里,而且由于你想让用户自定义,这些信息还都要面向用户开放,由他们自己设置, 你还需要一个类似WYSIWYG的表单设计工具,否则用户添加或删除原件的时候没有直观认识,必然会出错。而动态设计表单外观本身就是很复杂的事情,最好的办法就是用类似HTML里的TABLE来定义原件位置(以行+列定义原件坐标),想象一下,用Dreamweaver之类的可视设计工具设计表单都有可能产生问题,动态生成的就更不用说了,危险性更大。说的这么骇人听闻,其实动态表单也不是不可实现的,想象Joomla, Drupal之类的工具,不就是动态表单最好的范例吗?但这些东西的主要功能就是实现动态表单,而你的工程可能目标是更多的应用性功能,表单只是作为采集数据的一个窗口。所以个人看法,网络应用程序里动态表单得不偿失,不如把经历花在怎么实现业务功能,怎么提高系统性能上。胡言乱语,仅供参考。
      

  2.   

    主要的纠结的是:客户隔段时间要求加个小功能(增删查改),太烦。做成动态生成表单,前期投入比较大,后期好像比较可观。好像hibernate可能实现动态表的创建什么的。
      

  3.   

    把用户提交的信息保存成json字符串,用一个字段存,不管什么变化都没事,不知道可以解决你的问题不
      

  4.   

    是不是要实现类似这们的效果:
    http://www.jsform.com