还记得当年在下写的文章吧?(没多久一个星期而已),里面包含了自定义表单(关键是各个基础类型的显示方式,每一个参数索包含的验证规则列表的处理),crud的生成(最大的问题是column列名的获取及模板的编写),存储过程的生成器(同crud),那么第一版的自定义表单如下支持的数据类型及显示方式验证规则如下:
但我不是很满意--假如我添加的是一个自定义object,那怎么办呢?
譬如:一家店铺的表单类如下:
package ProCodeGen.formModel;
import CodeGen.CustomModel.Annotations.*;
@FormDetail(name = "shop",prefix = "eform.",formName_ZH = "店铺表单",formID = "form1")
public class shopModel {
@Display(name = "主键",display = HtmlUI.InputHiddenField,defaultValue = "0")
public int id;
@Display(name = "店铺名称",display = HtmlUI.InputNormalText,defaultValue = "请填写名称")
@Validate_isRequired(ErrorMessage = "必须填写店铺名称")
public String title;
@Display(name="店铺封面",display = HtmlUI.InputImgURL,defaultValue = "")
@Validate_isRequired(ErrorMessage = "必须选择店铺封面!")
@Validate_isURL(ErrorMessage = "图片地址格式错误!")
public String imgurl;
@Display(name = "地址示意图",display = HtmlUI.InputImgURL)
@Validate_isRequired(ErrorMessage = "必须补充店铺的位置示意图!")
public String mapLocation;
@Display(name = "店铺描述",display = HtmlUI.InputNormalText,defaultValue = "暂无描述")
@Validate_isRequired(ErrorMessage = "必须填写店铺描述!")
public String description;
@Display(name = "电话号码",display = HtmlUI.InputNormalText,defaultValue = "xxxx")
@Validate_isRequired(ErrorMessage = "必须填写号码!")
@Validate_isPhoneNumber(ErrorMessage = "号码格式错误!【例如:xxxx】")
public String tel;
@Display(name = "联系邮箱",display = HtmlUI.InputEmailText,defaultValue = "xxxx@139.com")
@Validate_isRequired(ErrorMessage = "必须填写联系邮箱!")
public String email;
@Display(name = "联系人",display = HtmlUI.InputNormalText)
public String contactor;
@Display(name = "置顶",display = HtmlUI.Radio_Boolean,defaultValue = "false")
public boolean istop;
@Display(name = "详细描述",display = HtmlUI.InputRichEditor,defaultValue = "")
public String content;
}
但是表单并非都是一维数据的,假如我要添加多幅相册图片,多个产品分类,---这个需求很正常吧?我开了一家店,要给里面的产品分类,也要添加多幅图片然后在前台展示出来---假如按照标准crud的流程,那么店铺信息三个页面---list.jsp add.jsp edit.jsp 店铺相册三个页面 list.jsp add.jsp edit.jsp 如此类推,完全看不出联系,但是我们做码农已经做够了,要突破,要将这些有联系的数据放在一起,今天的目的在于此----将原本的扁平型自定义表单生成器改造成为至少支持自定义类型,至少支持自定义类型列表的表单生成器,ok,下面将数据模型给出来,然后从模型慢慢推导操作---假如这篇文章留言超过一百的话,我会将该表单生成器全部开源。
【添加无限下属自定义类型后的数据模型】
注意:参数内容里面有递归自调用--这个还真是递归来的,因为一个参数下面还有参数,参数下面还可能有参数----就看你希望这种树形结构最多多少层了。我唯一数量的数据结构及算法可能就是树形结构及递归了,其他排序算法的,惭愧。
下面我们将编写这个数据格式的类及围绕这个数据格式而衍生出一系列辅助标记类,读取类等。当然,模板的编写也是重点。