@Email不能正常工作,但@pattern在hibernate中工作

时间:2017-07-14 11:00:15

标签: spring hibernate

我正在尝试使用Hibernate验证spring表单输入。当我尝试使用@Email验证电子邮件时不会返回任何消息..如果我使用@Pattern,它给出如果我尝试验证" 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

1 个答案:

答案 0 :(得分:0)

正如其中一条评论中所述,根据Hibernate Email Validator使用的正则表达式模式,您的输入AbstractEmailValidator构成了有效的电子邮件地址。您可以查看Hibernate的eq here的源代码。

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

相关问题