Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring @电子邮件不起作用,但@pattern在hibernate中起作用_Spring_Hibernate - Fatal编程技术网

Spring @电子邮件不起作用,但@pattern在hibernate中起作用

Spring @电子邮件不起作用,但@pattern在hibernate中起作用,spring,hibernate,Spring,Hibernate,我正在尝试使用Hibernate验证spring表单输入。。当我尝试使用@Email验证电子邮件时,不会返回任何消息。。如果我使用@模式,它会给我输出,但是如果尝试验证”test@test.test“它接受了。。我想避免接受这样的条目。。请在这件事上指点迷津。。 这是我的代码: Person.java import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; im

我正在尝试使用Hibernate验证spring表单输入。。当我尝试使用
@Email
验证电子邮件时,不会返回任何消息。。如果我使用
@模式
,它会给我输出,但是如果尝试验证”test@test.test“它接受了。。我想避免接受这样的条目。。请在这件事上指点迷津。。 这是我的代码:

Person.java

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Pattern;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name="person")
public class Person implements Serializable
{
    @Id
    @Column(name="name")
    @NotBlank
    private String name;

    @NotBlank
    @Column(name="address")
    private String address;

    @NotBlank
    @Column(name="contact")
    private String contact;

    //@Email(message="Invalid")
    @Pattern(regexp ="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.(?:[a-zA-Z]{2,6})$", message="Invalid E-Mail")
    @Column(name="email")
    private String email;

    //getter-setters
}
messages.properties文件:

 NotBlank.person.name = Name can not be empty
 NotBlank.person.address = Address can not be empty
 NotBlank.person.contact = Contact can not be empty

如其中一条评论所述,您的输入
test@test.test
根据Hibernate电子邮件验证程序使用的正则表达式模式构成有效的电子邮件地址。您可以查看Hibernate的
AbstractEmailValidator
的源代码


事实上,大多数电子邮件验证程序都会将此输入视为有效电子邮件。但是,出于您的需要,这是一封无效的电子邮件,可能是因为它在最后一个点后有4个字符,您可以使用您在问题中显示的模式

为什么??从模式的角度看
test@test.com
是一个非常有效的电子邮件地址。此外,根据规范,您的模式不允许使用有效的电子邮件。现在,您可以在最后一个点后使用4个字符-请参阅@GrzegorzOledzki,我同意。这就是为什么我说OP的输入将被大多数电子邮件验证器认为是有效的。