1. 前言
    自定义字段又叫做“开放模型”,用户可以根据自已的需求,添加需要的字段,实现个性化定制。
  2. 使用自定义字段的目的,使用自定义字段解决哪些问题
    如现有一套CRM系统,客户模块中客户信息,需要实现不同行业,不同业态都可以个性化需求。那我们知道客户信息表T_CUSTOM,如姓名,性别,电话
    等基本通用属性是可以通用的,但如药疗行业客户需要记录体重,血压等,而运输行业的客户更关注货物品类,产量等,而又如快速消费品行业关注客户的爱好,年龄,星座啊,这些问题该如何处理呢?
  3. 自定义字段的设计与实现
    a、相关数据库表说明
    自定义模板表:T_CUSTOM_FIELD_TEMPLATE
    客户信息表:T_CUSTOM
    业态行业类型与自定模板对应用表:T_BUSINISS_TEMPLATE
    注:T_BUSINISS_TEMPLATE不同的业态、行业类型对应不同的自定义模板

    b、相关数据库表结构说明
    

    自定义模板表:T_CUSTOM_FIELD_TEMPLATE

注:模板内容如下

[{"label":"货品名称","fieldName":"productName","type":"textfield","required":true,"sequence":1,"rows":3,"minLength":5,"maxLength":20,"vtype":"none","vtypeContent":"","vtypeText":"","defaultValue":"apple Mac","readOnly":false},{"label":"产量","fieldName":"turnout","type":"numberfield","required":true,"sequence":2,"minValue":5,"maxValue":20,"decimalPrecision":2,"defaultValue":20000,"readOnly":false},{"label":"爱好","fieldName":"loves","type":"combobox","required":false,"sequence":4,"singleOption":[{"itemValue":"1","itemName":"看书"},{"itemValue":"2","itemName":"羽毛球"}],"defaultValue":"1"}]



运输行业扩展模板


自定义字段的类型有,文本框、数字框、日期框、单选框、多选框
新增文本框类型的自定义字段

新增数字框类型的自定义字段

新增日期框类型的自定义字段

新增单选框框类型的自定义字段

新增多选框类型的自定义字段的界面可以参考单选框界面。

看到这里,有一定基础的同志们肯定会有豁然开朗的感觉。
数据库表中数据如下:

医疗行业新增用户界面

快消行业新增用户界面

运输行业新增用户界面

点新增客户按钮后,会根据用当前的不同业态自动加载不同的自定义模板,在界面显示不同的业务自定义字段。
d、涉及相关知识点的剖析和处理
• 新增不同的自定义字段保存到自定义模板中

//获取post请求的所有参数以及参数对应的值Map<String, String[]> params = request.getParameterMap();  JSONObject jsonObject = new JSONObject();for (String key : params.keySet()) {  String[] values = params.get(key);  for (int i = 0; i < values.length; i++) {  String value = values[i];  jsonObject.put(key, value);}  } String content = jsonObject.toString();

用上面的代码,新增不同的自定义字段在后台就可以统一处理了,然后将自定义字段的JSON拼装起来。
• 新增用户时,在后台获取到模板内容,扩展字段怎么显示在前台新增页面。

后台代码如下:

String content = customFieldTemplate.getContent();
request.setAttribute("content", content);

在页面动态加载自定义模板,页面代码如下:

<div id="customFieldDiv" class="easyui-panel" title="自定义字段"style="width:96%;height:200px;padding:5px;"></div>
var dataStr = '${content}';var jsondatas=eval("("+dataStr+")"); var resultHtml = "";$.each(jsondatas,function(i,n){  if(n.sequence == (i + 1)){resultHtml = resultHtml + '<table class="table" style="width: 100%;">';if(n.type == 'textfield'){resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-textbox" data-options="required:'+n.required+'"/></td></tr>';}else if(n.type == 'numberfield'){resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-numberbox" data-options="required:'+n.required+',min:'+n.minValue+',precision:'+n.decimalPrecision+'"/></td></tr>';}else if(n.type == 'datetime'){resultHtml = resultHtml + '<tr><td><input labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;" type="text" name="'+n.fieldName+'" value="'+n.defaultValue+'" class="easyui-datebox" data-options="required:'+n.required+',min:'+n.minValue+'"/></td></tr>';}else if(n.type == 'combobox'){resultHtml = resultHtml + '<tr><td><select labelAlign="right" labelWidth="100px;" label="'+n.label+'" style="width:300px;"  name="'+n.fieldName+'" class="easyui-combobox" data-options="required:'+n.required+'">';$.each(n.singleOption,function(j,m){ resultHtml = resultHtml + '<option value="'+m.itemValue+'">'+m.itemName+'</option>';});resultHtml = resultHtml + '</select>';resultHtml = resultHtml + '</td></tr>';}resultHtml = resultHtml + '</table>';}}); $('#customFieldDiv').append(resultHtml);
  1. 小结
    自定义字段的另一种解决方案EAV(Entity-Attribute-Value),大家可以百度。
    自定义模板内容和客户表中的护展字段模板数据都是大文本类型(longtext), mysql5.7 支持json,可以将这两个字段改为json类型。另外hibernate映射数据库中的json字段解决方案可以参考http://blog.csdn.net/qian_meng/article/details/48394379。通过上面两点可以对系统进行进一步的优化。
    自定义字段的类型,除文本框、数字框、日期框、单选框、多选框外还可以添加图片、声音、视频等其他类型。
    自定义字段数量很多时,又类型不同,怎样布局,使用页面更美观、舒服也有一定难度。

自定义字段的设计与实现(Java实用版)相关推荐

  1. java自定义字段_自定义字段的设计与实现(Java实用版)

    前言 自定义字段又叫做"开放模型",用户可以根据自已的需求,添加需要的字段,实现个性化定制. 使用自定义字段的目的,使用自定义字段解决哪些问题 如现有一套CRM系统,客户模块中客户 ...

  2. 项目开发中自定义字段设计原则

    在开发系统过程中,做到自定义字段策略设置,目前这种功能是很多系统的标准配置,这样子可以简化后续增加字段的难度,并对自定义字段做管理. 自定义字段功能要注意到以下几点: 1.批量规划好要自定义字段的数据 ...

  3. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle...

    Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3.  ...

  4. 将JSON对象中的某个字段进行分组和排序(java实现)

    现在有这样一个数据 { "systemid": "123", "productid": "123", "dat ...

  5. react-sortablejs 实现自定义表单设计

    一.业务需求描述 1. 能够拖动表单组件(不限制样式)到指定区域后,渲染成指定的组件 2. 能支持自定义标签名和属性,以及默认值 3. 能实现可支持预览.可排序.可编辑等功能 4. 能通过JSON数据 ...

  6. php 自定义字段erp,ERP自定义单据界面、自定义字段

    自定义功能模块 泛普软件ERP有几十个成熟的子系统,除了系统默认的组合外,客户可以根据信息化需求阶段,自己设定功能模组及菜单.自定义模块.自定义功能组的功能可以任意拆分组合子系统,通过根据企业实际情况 ...

  7. MIPCMS如何用火车头采集自定义字段?

    文章目录[隐藏] 前言 解决方法 前言 1.  最近在用MIPCMS采集一些东西时,需要用火车头采集自定字段,测试了许久都没有结果,于是到论坛搜了下,找到答案了,记下备用 解决方法 进入宝塔后台,选择 ...

  8. kettle 筛选数据 并根据关键字段去重 设计

    文章目录 前言 kettle 筛选数据 并根据关键字段去重 设计 实现: 1.配置sqlite 数据库链接 2.先从test表里抽取数据 3.将表输入查询的数据插入到excel里 4.将筛选出来的数据 ...

  9. 生产齐套分析单/缺料分析单子项明细自定义字段-金蝶社区转载

    在金蝶云星空7.2版本中,制造云的生产管理模块以及计划管理模块新增了两个从原生产备料单中拆分出来的新功能--生产齐套分析单以及缺料分析单.两张单的业务实现分别对应原生产备料的齐套分析策略和缺料分析策略 ...

最新文章

  1. 机器视觉系统设计关键:成像基准
  2. php 使用sendgrid api 发送邮件_linux - 使用命令发送邮件
  3. 常用算法一(分治算法)
  4. JSP 的“4379”
  5. 系列教程丨用 Docker 探索开源软件 —— Elasticsearch(一)
  6. freebasic 编译linux,FreeBasic(basic语言编译器)0.90.1官网版
  7. Python 的RS485 串口通讯
  8. Java程序员工资为什么越来越高?
  9. android 4.2 dropbox,android 下用脚本备份文档到dropbox的实现
  10. linux下解压rar和7z压缩文件
  11. 千百万Java开发者的福音:跨平台Cocos2d-Java游戏引擎诞生
  12. python爬虫利器之scrapy的基本教程
  13. C/C++编程工具及实用小软件推荐_dvlinker的博客-CSDN博客_编写c++的软件
  14. Yii2 yii2-imagine的使用
  15. GPT-3有多强?伯克利小哥拿它写“鸡汤”狂涨粉,还成了Hacker News最火文章?!
  16. Latex 多个参考文献的引用以及文献字体大小调整方法
  17. 虚幻4入门(设置游戏物体的位置,代码施加力和力矩,碰撞)
  18. python2使用openpyxl版本_python openpyxl 2.5.4 版本 excel常用操作封装
  19. mt2503[SMS] 手机无法发出短信
  20. [日语二级词汇]动词(6)

热门文章

  1. VFP 字符串转数组
  2. 用Python实现地理编码
  3. gis插入的文本怎么搞成两行_word文档编辑:如何在文档中插入视频?
  4. 使用U盘要注意的4大原则
  5. 金秋十月,巨杉再获金融行业认可
  6. 【报告分享】2021年6月两大消费赛道抖音月报-果集数据(附下载)
  7. AI被攻击者滥用后,是人工智能还是“人工智障”?
  8. 联想linux笔记本电脑有哪些软件,联想终于出Linux笔记本了!真的很赞
  9. vue 实现日历功能
  10. 每日简报 5月20日简报新鲜事 每天一分钟 了解新鲜事