我有一个DTO类,我在其中设置了一些强制字段。并且,基于另一个类型字段,其中值可以假设A和B,如果类型A,则需要检查只有1项可以传递,如果B,它也可以大于1。
我需要检查一个列表在DTO类级别中是否至少有1个值。并且,在自定义批注验证中,我需要根据DTO的类型字段检查列表的大小。
所以,在DTO中
@NotNull
@Size(min = 1)
private List<@NotBlank String> items;
并且,在注释内
if (cancelType == CancellationTypeEnum.A && cancelDto.getItems().size() > 1) {
isValid = false;
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(
"Only one item can be sent for 'A' cancel type.").addConstraintViolation();
}
但是,由于字段级别发生在后面,如果我为items字段传递null,它将转到这个注释验证器&当字段为null时抛出NPE&我正在尝试获取大小
临时的解决方案是我做空检查,然后检查大小,但在字段级别,我们无论如何都给@NotNull。
您可以使用JS-303验证组(请参见此处),并结合@validated使用文档:
JSR-303的Valid的变体,支持验证组的规范。
例如:
@CheckEnumSize(groups = {Secondary.class})
public class CancelDto {
public CancelDto(List<String> items) {
this.items = items;
}
@NotNull(groups = {Primary.class})
@Size(min = 1)
public List<@NotNull String> items;
public CancellationTypeEnum cancelType;
public List<String> getItems() {
return items;
}
}
public interface Primary {
}
public interface Secondary {
}
@Service
@Validated({Primary.class, Secondary.class})
public class CancelService {
public void applyCancel(@Valid CancelDto cancel) {
//TODO
}
}
Caused by: javax.validation.ConstraintViolationException: applyCancel.cancel.items: must not be null
我有以下问题,有一个常规的spring模型(我们称之为“a”),带有一些与验证相关的注释。接下来是一个命令对象(定义一些字段的常规POJO类,其中一个是类型a的对象)。command对象实现了Validator接口,以使绑定和验证在控制器方法中工作。 问题是,如何在命令对象内部使用注释配置的验证(因为它实现了Validator接口,所以它有supports()和validate()方法)。 我试图
问题内容: 有没有一种方法可以使用此处定义的注释来定义Hibernate验证规则,说明至少一个字段不能为null? 这将是一个假设的示例(实际上不存在): 在所示的情况下,fieldA可以为null或fieldB可以为null,但不能同时为两者。 一种方法是创建自己的验证器,但是我想避免它已经存在。如果您已经验证过,请分享一个验证人…谢谢! 问题答案: 我终于写了整个验证器: 用法示例:
问题内容: 我正在为我的BSc项目编写相当大的Web应用程序,并使用MySQL在PHP中编写它。 创建SQL表时,我应该使用唯一字段吗?我之所以这样问,是因为我正在向PHP中编写验证方法。例如,如果我想检查数据库中是否已经存在电子邮件地址,我将首先执行一条SQL语句,查看是否返回了任何电子邮件地址,然后将初始SQL数据插入数据库中。 如果我只是插入初始SQL数据,则它将在整个语句上引发错误,因为电
我正在尝试使用<code>Hibernate Validator</code>验证请求对象。 作为一个简单的例子,假设我要验证的对象的类有一个<code>B bObj</code>字段,其中<code>B 因此,我实现了自己的自定义,它链接到自定义类。 DTO类 我的endpoint方法签名(其中调用验证器,并设置活动组): 我的验证器类 我想要实现的是基于活动组对同一字段应用不同的验证。活动组是
我试图在上传图片之前验证我的表单,但是我在中间件上得到了空字符串 下面是我的中间件: 我知道我可以使用multer的fileFilter,但是有些时候我没有任何图像可以上传,只有string来存储和验证,我尝试将req.body从multipart/form-data解析为string,然后验证并使用next(),但是我得到了一个范围错误,我该如何解决这个问题呢?
我有一个java Spring Boot项目,我想验证匹配的密码,并在json响应中显示错误。 验证器: 调用类级别的验证器,但响应负载中不包含错误消息。当我使用属性上使用的另一个自定义验证器(UniqueEmailUserSignup)时,错误消息如下所示。但是缺少密码确认消息。 实体通过控制器功能中的有效注释进行验证。 如何确保自定义ConstraintValidator的错误消息也包含在错误