java 动态表单设计
项目需求
不同的任务会有不同的配置,根据所选择的任务,展示不同的表单
思路
后端给页面返回 List <String,List> list, object 是各任务所有的属性集合
代码
// 自定义注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TaskProperty {/*** 属性描述名*/String label() default "";/*** 默认值*/String defaultValue() default "";/*** 是否必填*/boolean required() default false;/*** 输入框文本*/String placeHolder() default "";
}//所有可执行的 枚举
@Getter
public enum TaskConfigEnum {HNZX(HnUploadConfig.class,"定时"),;private Class type;private String name;TaskConfigEnum(Class type, String name) {this.type = type;this.name = name;}
}// 对用task 需要的配置
@Data
public class HnUploadConfig {@TaskProperty (required = true,label = "ip地址",placeHolder = "127.0.0.1")private String host;@TaskProperty(required = true,label = "端口")private String port;@TaskProperty (required = true,label = "表达式")private String cron;@TaskProperty (required = true,label = "方法名")private String method;@TaskProperty (required = true,label = "参数")private String param;
}// main methodpublic Object getTranslatorList() {TaskConfigEnum[] translators = TaskConfigEnum.values();List<TaskVo> list = Arrays.stream(translators).map(translator -> {TaskVovo = new TaskVo();vo.setName(translator.getName());Class<?> type = translator.getType();Field[] fields = type.getDeclaredFields();List<TaskPropertyVo> propertyList = Arrays.stream(fields).filter(field -> field.isAnnotationPresent(TaskProperty.class)).map(field -> {TaskPropertyVo property = new TaskPropertyVo();property.setName(field.getName());TaskProperty translatorProperty = field.getAnnotation(TaskProperty.class);if (StringUtils.isNotBlank(translatorProperty.label())) {property.setLabel(translatorProperty.label());} else {property.setLabel(field.getName());}property.setRequired(translatorProperty.required());property.setPlaceHolder(translatorProperty.placeHolder());return property;}).collect(Collectors.toList());vo.setPropertyList(propertyList);return vo;}).collect(Collectors.toList());return list;}@Data
public class TaskVo {//名称private String name;//属性集合private List<TaskPropertyVo> propertyList;
}@Data
public class TaskPropertyVo {//属性名称private String name;//属性描述private String label;//是否必填private boolean required;//placeHolderprivate String placeHolder;
}
java 动态表单设计相关推荐
- java动态表单设计解析
于雷劈网的表单设计器扩展,java实现后台解析(插件内容和字段和原版有一定改变).致敬雷劈网.http://formdesign.leipi.org/ 全部代码地址在 https://gitee.co ...
- mysql动态表单设计与实现_动态表单的数据库结构设计
利用在线编辑器设计的表单,包含输入框,明细表(动态添加行)等需要存储到数据库的信息,现在有三种思路: 1.一个表单对应数据库的一张或多张物理表(主从表),这种设计在很多业务的情况下,其数据库的物理表会 ...
- 碎片数据收集利器-结构化动态表单设计思路
本文基于面向基本公共卫生的业务系统设计经验,抽象出一套适合大型ERP系统的表单业务数据模型,目标是最大限度保留系统弹性的同时,尽可能降低系统复杂度和开发成本.enjoy~ 背景 填写表单应该是所有业务 ...
- JAVA动态表单,自定义表单,自定义字段
基于雷劈网的表单设计器扩展,java实现后台解析(插件内容和字段和原版有一定改变).致敬雷劈网. http://formdesign.leipi.org/ 动态表单绘制完毕后由后台解析并存储到数据库, ...
- Java form表单原理,动态表单及动态建表实现原理[Java编程]
赞助商链接 本文"动态表单及动态建表实现原理[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下 ...
- java中显示动态信息的方法_java里的动态表单技术
最近的一个项目,由于客户的需求等信息不确定,为了降低以后修改的成本及产品的推广考虑到动态表单技术,之前也一直在考虑到动态表单技术,毕竟在delphi里已经实现过了,由于我们采用的hibernate的执 ...
- java 自定义表单 动态表单 表单设计器 工作流引擎 flowable
自定义表单设计模块都有哪些? 1 定义模版:拖拽左侧表单元素到右侧区域,编辑表单元素,保存表单模版 2 表单模版:编辑维护表单模版,复制表单模版,修改模版类型,预览表单模版 3. 我的表单:选择表单模 ...
- 表单设计工具和报表工具
收集了一些资料: 1 .IBM发布开源HTML 5可视化设计工具Maqetta 4月12日,来自 IBM Impact 2011 的消息,IBM发布 Maqetta,一个创建桌面和移动用户界面的HT ...
- 基于mongodb的动态表单实现
文章目录 1. 项目背景 2. 术语表 3. 技术选型 4. 概要设计 4.1. 逻辑架构图 4.2. 系统覆盖图 5. 详细设计 5.1. 元数据样例及说明 5.2. 关于uuid 6. 接口清单 ...
- 动态表单工作量给后端
动态表单工作量给后端 让前端远离互相伤害 一个IT公司的日常就是程序员.产品经理.UI等同事们的互相残杀: 应用,不少前端就备受煎熬,除了修改需求的魔咒外,还有后端的重构和调整接口诅咒,即便需求没改, ...
最新文章
- 微型计算机系统外文,微型计算机控系统(单片机控制系统) 毕业论文外文翻译.doc...
- ORACLE8对象模型
- 【剑指offer-Java版】30最小的K个数
- 【Linux开发】linux设备驱动归纳总结(十二):简单的数码相框
- 在创业之路上不断创新
- HDU - 1223 DP 分类
- 社区 正式发布了跨平台的 CoreWCF 0.1.0 GA
- qq收不到oracle邮件,腾讯企业邮箱发送邮件失败
- 微内核和宏内核的区别(短小、精悍)
- percona-toolkit工具包的使用教程
- 删除某文件以外的文件
- C#动态生成Word文档并填充数据(一)
- jpa原生query_Spring Data Jpa @Query原生SQL
- VB更改任何标题程序源代码
- 【论文解读】结合概率图模型和神经网络做图片问答
- markdown编辑软件Ulysses 24.5 for Mac
- 上周热点回顾(4.30-5.6)
- mysql5.5创建学生情况表_数据库中创建一个学生表
- 苹果手机专用计算机,使用苹果手机,发现iphone连不上wifi怎么办?连不上wifi解决方法...
- SSO单点登录Java实现实例