当前位置: 首页 > 知识库问答 >
问题:

如何解决验证失败的类[*]在组的持续时间[javax.validation.groups.默认,]

贺轶
2023-03-14

我的实体课

@NotNull
@Size(min = 1,message = "is required")
@LinkExists
private String link;

我的注释类LinkExists

String message() default "Invalid Link";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

注释约束类

private Pattern pattern;
private Matcher matcher;
private static final String youtubePattern = "^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+";

@Override
public boolean isValid(final String link, ConstraintValidatorContext context) {
    
    pattern = Pattern.compile(youtubePattern);
    if (link == null) {
        return false;
    }
    matcher = pattern.matcher(link);
    return matcher.matches();
}

我正在使用带有自定义注释的spring boot,但每当我输入错误的输入时,它就会崩溃,并在控制台中显示以下登录信息

Validation failed for classes [com.modern.school.entity.Video] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='Invalid Link', propertyPath=link, rootBeanClass=class com.modern.school.entity.Video, messageTemplate='Invalid Link'}
]

@LinkExist是我的自定义注释如何修复此问题

共有1个答案

席兴平
2023-03-14
  1. 你试图验证一个链接(你认为它是有效的),你得到了那个错误吗

尝试删除模式的第一组和最后一组上的额外\项

^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+

^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+

用https://www.youtube.com/watch?v=sssssssss测试

我注意到在你的验证中你检查的是null,那么这个@NotNull就没有用了(留一个)

我认为你必须把你的名字从LinkExists改成validYoutubeLink,因为valid并不意味着视频存在

 类似资料:
  • 问题内容: 在Windows Vista SP2 + Python 2.7.10上,我可以连接到https://www.python.org,但不能连接到https://codereview.appspot.com 剧本: 并输出: 如何解决问题,https://codereview.appspot.com/到底有什么问题? 问题答案: 我的猜测是,它与OpenSSL中的替代链处理有关,如Pyth

  • 我需要一些解释为什么这个代码不编译: 错误: 类型Duration中的(TemporalAmount)方法不适用于参数(ChronoUnit) 正如本文所述: public static Duration from(TemporalAmount amount)从时间量中获取持续时间的实例。这将根据指定的金额获得持续时间。TemporalAmount表示一个时间量,可以是基于日期的,也可以是基于时间

  • 任何人谁可以解决这个问题的颤振。请帮帮我。谢谢 失败:生成失败,出现异常。 > 其中:Build file'C:\hello\u everyone\android\app\Build。梯度线:1 错误:评估项目“: app”时出现问题。 在Project类型的project': app'上找不到参数[]org.gradle.api.方法Properties()。 > 尝试:使用--stacktra

  • 我遇到了一个问题,我的MySQL表有一个存储UTC时间偏移的字段。该字段为时间类型。这是出于遗留原因,我无法将列类型更改为更好的表示形式。然而,MySQL支持这一点。它允许用户在时间字段中存储负值,以表示负时差。我使用querydsl生成实体类,并将该字段映射到java。sql。时间物体。现在,当DB中有负值时,我面临一个问题。爪哇。sql。Time类将任何负值转换为前一天的时间。例如,如果DB中

  • 问题内容: 我想记录实际的时间花了多长时间。目前,我正在这样做: 但是,如果在运行SQL查询(或任何其他查询)时调整了时间,那将失败(产生不正确的结果)。 我不想仅仅对其进行基准测试。我想将其记录在实时应用程序中,以便查看实时系统上的趋势。 我想要类似clock_gettime(CLOCK_MONOTONIC,…)的东西,但是在Python中。并且最好不必编写一个调用clock_gettime()

  • 在ISO 8601中,持续时间的格式为<code>P[n]Y[n]M[n]DT[n]H[n]M[n]S。 例子: 20秒: 一年两个月三天四小时五分钟六秒: 问题: 给定一个包含iso 8601格式的持续时间的字符串。我想获得这段时间的总秒数。标准C 11中推荐的实现方式是什么? 备注: 例如,boost DateTime中有ptime from _ iso _ string(STD::strin