当前位置: 首页 > wzjs >正文

重庆网站优化网络服务crm免费版

重庆网站优化网络服务,crm免费版,wordpress发布公告,关于我们网页设计模板项目场景: 提示:Valid校验子类对象中属性: 问题描述 例如:类中包含基本属性与组合子类属性时,子类属性的Valid校验递归NotBlank、NotNull不生效。 问题解决方案 如何通过注解方式来实现类属性递归Valid校验&#…

项目场景:

提示:Valid校验子类对象中属性:

问题描述

例如:类中包含基本属性与组合子类属性时,子类属性的Valid校验递归@NotBlank、@NotNull不生效。

问题解决方案

如何通过注解方式来实现类属性递归Valid校验?

业务控制层LedgerRest

@RequestMapping("/ledger")
public class LedgerRest {@PostMapping("/workOrderCallback")public Map<String, Object> workOrderCallback(@Valid @RequestBody LedgerCallbackReq ledgerCallbackReq) {return ledgerService.workOrderCallback(ledgerCallbackReq);}}

主类LedgerCallbackReq

import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;/*** @Desc  请求参数Req*/
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class LedgerCallbackReq {@ApiModelProperty("绑定关系外键")@NotBlank(message = "foreignKey不能为空或空白")@NotNull(message = "foreignKey不能为空或空白")public String foreignKey;@NotBlank(message = "绑定状态bindingStatus不能为空或空白")@NotNull(message = "绑定状态bindingStatus不能为空或空白")public String bindingStatus;@ApiModelProperty("模板字段列表")@NotEmpty(message = "模板字段列表不能为空")@Validpublic List<LedgerCallbackColumnList> columnList;
}

主类中组合类型的子类 LedgerCallbackColumnList

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;/*** @Description* @Date 2025/4/10 20:56* @Created by chenjun*/
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class LedgerCallbackColumnList {@ApiModelProperty("主键")@NotBlank(message = "主键id不能为空或空白")public String id;@ApiModelProperty("模板code")@NotNull(message = "模板code不能为空或空白")@NotBlank(message = "模板code不能为空或空白")public String templateCode; @ApiModelProperty("字段值")@JsonIgnoreProperties({"optionValues"})public String optionValues;
}

主类属性和组合子类与String转化

问题描述:Json串转换成组合类对象时,Json串中部分属性节点可以不存在或者存在不确定性,转换成组合类对象时忽略此属性值。
解决思路:
1.采用fastjson实现String(JSON)转换成组合类对象
2. Json串中存在不确定性的属性节点映射的类属性加入: @JsonIgnoreProperties({“format”})
解决方式:

pom.xml依赖 fastjson

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>

转换类FormItemDto定义

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.util.List;
/*** 扩展工单基础表单、台账表单Form组件*/
@Data
public class FormItemDto {//自定义表单字段属性public String title;public String name;public String icon;public String value;public String valueType;public String id;//台账表单字段属性public String ledgerField;public String ledgerValueEn;public String ledgerType;public String ledgerKeyItem;public FormItemPropsDto props;@Datapublic static class FormItemPropsDto {private Boolean required;private Boolean enablePrint;//JSONField忽略属性expanding映射@JsonIgnoreProperties({"expanding"})private Boolean  expanding;//JSONField忽略属性format映射@JsonIgnoreProperties({"format"})private String format;//日期格式,"format": "YYYY-MM-DD HH:mm:ss"@JsonIgnoreProperties({"options"})//JSONField忽略属性options映射private List<String> options;}
}

转换测试类LedgerServiceTest

import com.alibaba.fastjson.JSON;
import com.isoftstone.order.Main;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.ArrayList;
import java.util.List;
/*** @Description* @Date 2025/4/10 17:29* @Created by chenjun*/
@ExtendWith(SpringExtension.class)
@Slf4j
@SpringBootTest(classes = Main.class)
public class LedgerServiceTest {@Testpublic void orderWorkerFormDtoTest(){String orderWorkerForm = "[{\"icon\":\"EditPen\",\"id\":\"field1791775564953\",\"ledgerField\":\"2\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"\",\"ledgerValueEn\":\"\",\"name\":\"TextInput\",\"props\":{\"enablePrint\":true,\"required\":true},\"title\":\"单行文本输入\",\"value\":\"\",\"valueType\":\"String\"},{\"icon\":\"MoreFilled\",\"id\":\"field6482675568504\",\"ledgerField\":\"2\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"\",\"ledgerValueEn\":\"\",\"name\":\"TextareaInput\",\"props\":{\"enablePrint\":true,\"required\":true},\"title\":\"多行文本输入\",\"value\":\"\",\"valueType\":\"String\"},{\"icon\":\"CircleCheck\",\"id\":\"field6585575571954\",\"ledgerField\":\"2\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"\",\"ledgerValueEn\":\"\",\"name\":\"SelectInput\",\"props\":{\"enablePrint\":true,\"expanding\":true,\"options\":[\"是\",\"否\"],\"required\":true},\"title\":\"单选框(是否)\",\"value\":\"\",\"valueType\":\"String\"},{\"icon\":\"Finished\",\"id\":\"field2349975573055\",\"ledgerField\":\"2\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"\",\"ledgerValueEn\":\"\",\"name\":\"MultipleSelect\",\"props\":{\"enablePrint\":true,\"expanding\":true,\"options\":[\"选项1\",\"选项2\"],\"required\":true},\"title\":\"多选框\",\"value\":\"[]\",\"valueType\":\"Array\"},{\"icon\":\"Calendar\",\"id\":\"field5650675574627\",\"ledgerField\":\"2\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"\",\"ledgerValueEn\":\"\",\"name\":\"DateTime\",\"props\":{\"enablePrint\":true,\"format\":\"YYYY-MM-DD HH:mm:ss\",\"required\":true},\"title\":\"日期时间点\",\"value\":\"\",\"valueType\":\"Date\"},{\"icon\":\"CircleCheck\",\"id\":\"field0541787442910\",\"ledgerField\":\"1\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"T4\",\"ledgerValueEn\":\"testLedgerCode\",\"name\":\"SelectInput\",\"props\":{\"enablePrint\":true,\"expanding\":true,\"options\":[\"是\",\"否\"],\"required\":true},\"title\":\"台账编号\",\"value\":\"是 否\",\"valueType\":\"String\"},{\"icon\":\"CircleCheck\",\"id\":\"field4420728703814\",\"ledgerField\":\"1\",\"ledgerKeyItem\":\"0\",\"ledgerType\":\"T1\",\"ledgerValueEn\":\"testLedgerList\",\"name\":\"SelectInput\",\"props\":{\"enablePrint\":true,\"expanding\":false,\"options\":[\"值1\",\"值2\",\"值3\"],\"required\":true},\"title\":\"台账名称\",\"value\":\"值1 值2 值3\",\"valueType\":\"String\"}]";List<FormItemDto> formItemList = new ArrayList<>();// 自定义表单解析成对象try {formItemList = JSON.parseArray(orderWorkerForm, FormItemDto.class);log.info("formItemList:{}",formItemList.get(0).getId());}catch (Exception e){log.error("orderWorkerInputInfo转换失败");}}
}
http://www.dtcms.com/wzjs/597558.html

相关文章:

  • 网站关键词排名分析微信上可以做网站吗
  • 创建公司网站需要准备哪些素材网页小游戏手机版
  • 网站后台的制作阳江招聘网最新消息今天招聘
  • 登录贵州省住房和城乡建设厅网站网站建设的初步预算
  • 苏州网站定制公司推广获客
  • wordpress外贸网站好用的模板下载淘宝客优惠卷网站怎么做的
  • 做电影网站怎么赚钱手机可以开发网站
  • 电子商务网站设计的书最简单的做网站
  • 外贸网站建设不可缺少的灵活性学习网站开发体会与感想
  • 自己做的一个网站怎么赚钱湖南手机平台网
  • 网站建设属于哪个专业甘肃省住房城乡建设部网站
  • 响应式网站开发工具福州网页模板建站
  • 外冈网站建设怎样黑网站
  • 怎样做简单的网站贵阳网站建设多少钱?
  • 天津网站建设美丽php 企业网站模板
  • 甘肃兰州做网站株洲网站建设
  • 招聘网站怎么做seo南昌哪家做网站好
  • 搭建一个网站需要什么学做淘宝客网站有哪些
  • 企业网站设计哪家好郑州网站建设学习
  • 临沂网站建设教程939网站建设
  • 滨州北京网站建设备案网站代理商
  • 长春本地网站制作知名网站建设企业多少钱
  • IT男网站建设设计网站需提供什么
  • 小型网站用typescript玉环市建设工程检测中心网站
  • 大连网站建设网站建设app软件开发的费用设计
  • 做网站哪家好 张家口南通网站建设报价
  • 做泵阀到哪个网站好网络维护培训
  • 国内网站做得好的公司四川住建厅官方网站的网址
  • 优质服务的小企业网站建设凯里网站建设公司哪家好
  • 网站开发网络公司兼职wordpress全站网易云音乐播放