代码之家  ›  专栏  ›  技术社区  ›  wildabeast

在可以是电子邮件或URL的字段上使用预定义验证器的Spring模式验证

  •  2
  • wildabeast  · 技术社区  · 8 年前

    在我的Spring应用程序中,我试图验证一个字段,该字段可以是电子邮件地址或url(据我所知是非标准的)。

    我希望在某种组合中使用预定义的validators@Email和@URL,而不是使用大量的regex或实现我自己的验证方法。以下是我正在尝试的:

    @NotEmpty(message = "{plugin.helpUrl.notEmpty}")
    @Size(min = 3, max = 1000, message = "{plugin.helpUrl.invalidLength}")
    @Email
    @URL
    private String helpUrl;
    

    当然,如果输入了电子邮件,URL验证器将失败;如果输入了URL,电子邮件验证器将失败。这种行为是有道理的,但我想知道是否有办法把它们用在 @Email OR @URL .

    编辑

    2 回复  |  直到 8 年前
        1
  •  0
  •   Daisy Day    8 年前

    创建实用程序超级类ValidateField。创建两个子类ValidateEmail和ValidateUrl来扩展它,每个子类都有一个注释。使用要在构造函数中验证的字段创建每个。捕获从中实例化每个异常的类中的异常,并设置bools以确定它们是否有效。如果抛出的异常少于2个,则它是有效的。长风,但会实现你想要的。

        2
  •  0
  •   GolamMazid Sajib    8 年前

    你可以用 @AssertTrue

    @Valid
    @AssertTrue
    public boolean isValidEmailOrUrl(){
        if(new URLValidator().isValid(helpUrl,null) || new EmailValidator().isValid(helpUrl,null)){
            return true;
        }
        return false;
    }