多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
定义xml文件,例如:NameListCreateValidator.xml ~~~ <?xml version="1.0" encoding="utf-8"?> <!--表单校验 name: 数据映射名 desc: 表格列头描述 type: 表格列类型(1:String 2: NUMERIC 3:Datatime) format: 表格列数据格式(如果是数字,格式为0.00,#.##类似数据格式形式,如果为时间,格式为yyyy-MM-dd类似形式) nullable: 是否可为空option[yes|no] equsize: 输入值的定长位数限制,如equsize="10" minsize: 输入值的最小位数限制,如minsize="10" maxsize: 输入值的最大位数限制,如maxsize="100" maxvalue: 输入值的最大限制,如不能超过120:maxvalue="120" minvalue: 输入值的最小限制,如不能小于0:minvalue="0" regex: 利用正则表达式校验数据。注意:java里都是写两个反斜杠代表一个反斜杠,这里只写一个 。如regex="[EW]?[-]?\d+[°](\s?\d+[′](\s?\d+[″]))?" regexdesc: 正则表达式格式说明 如regexdesc="ddd°mm′ss″" datasrc: 如果想去TD_S_PARAM表校验,只写TYPE_ID即可,例如:datasrc="TOUCH_TYPE_ID";如果想指定表校验,写法如下:TD_M_STAFF.STAFF_ID.STAFF_ID method: 如果以上不满足校验,可在form上指定一个服务类方法,通过反射机制进行校验,例如method="exampleService.validateExample" 注意:datasrc和method只有开启服务端验证时才会生效。 --> <!-- 名单制客户新增校验 --> <form method="nameListService.validateNameList"> <element name="listName" desc="客户名称" type="1" nullable="no"/> <element name="custType" desc="客户大类" type="1" nullable="no"/> <element name="callingTypeCode" desc="行业类型" type="1" nullable="no"/> <element name="subCallingTypeCode" desc="行业子类" type="1" nullable="no"/> <element name="custAddr" desc="客户地址" type="1" nullable="no"/> </form> ~~~ 客户端校验:在form表单指定validXml属性 ~~~ <form id="custForm" name="custForm" class="w-form" method="post" action="${ctx}/namelist/createNameList" validXml='${util:validXml("namelist/NameListCreateValidator.xml")}'> ... </form> ~~~ 服务端校验:使用@ValidXml注解 ~~~ /** * 创建名单制客户基本资料 * * @throws Exception */ @RequestMapping(value = "/createNameList") @ValidXml("namelist/NameListCreateValidator.xml") public String createNameList(InParam<String, Object> inParam, TfNList namelist) throws Exception { // 提交审批 String listId = nameListService.createNameList(namelist, inParam); if ("audit".equals(inParam.getString("saveType"))) { return message.success("提交审批成功!生成名单制客户ID[" + listId + "]"); } // 保存草稿 else { return message.success("保存草稿成功!生成名单制客户ID[" + listId + "]"); } } ~~~