2012-05-17 40 views
5

Tôi có một thực thể gọi là tài khoản và tôi muốn xác nhận một số lĩnh vực điện thoại di độngValidate Mobile Number sử dụng Hibernate chú thích

Trường số điện thoại di động không bắt buộc nó có thể được để trống nhưng nó phải là một số 10 chữ số.

Nếu người dùng nhập bất kỳ giá trị nào ít hơn 10 chữ số chiều dài thì phải báo lỗi.

Dưới đây là lớp Người dùng của tôi.

public class User { 

    @Size(min=0,max=10) 
    private String mobileNo; 

} 

Khi tôi sử dụng chú thích @Sized như đã đề cập ở trên, tôi có thể xác thực các giá trị lớn hơn 10 nhưng nếu người dùng nhập ít hơn 10 chữ số thì không có lỗi.

Yêu cầu của tôi là, nếu người dùng để trống trường di động không hợp lệ nhưng nếu giá trị được nhập thì xác thực phải đảm bảo rằng số được nhập là 10 chữ số và chỉ 10 chữ số.

Chú thích nào tôi nên sử dụng cho yêu cầu này?

Trả lời

17

@Size(min=10,max=10) sẽ thực hiện công việc nếu trống, nghĩa là không.

Nếu bạn không đặt chú thích @NotNull, giá trị null sẽ vượt qua xác thực.

Nếu trống của bạn có nghĩa là chuỗi rỗng thì bạn cần phải sử dụng @Pattern validator:

@Pattern(regexp="(^$|[0-9]{10})") 

này phù hợp với một trong hai chuỗi rỗng hoặc 10 số chữ số.

+0

Nhưng vì hầu hết các khuôn khổ MVC sẽ ràng buộc một chuỗi rỗng vào một trường khi hộp văn bản tương ứng được để trống, điều đó có thể không thực sự giải quyết được vấn đề. Tôi đã giải quyết một vấn đề rất giống nhau bằng cách viết chú thích xác nhận của riêng tôi. Một điều khác mà bạn có thể xem xét là sử dụng biểu mẫu @Pattern và biểu thức chính quy để xác thực trường. –

+0

Làm cách nào chúng tôi có thể kiểm tra xem Số điện thoại không có dấu gạch ngang ở giữa? Ví dụ: 012-345-6789, các giá trị như vậy phải được xác nhận –

3

Có thể bạn có thể cải thiện phản hồi được đề xuất với việc sử dụng libphonenumber từ Google Code để xác thực phonenumbers của bạn.

+0

Điều này trông giống như một thư viện tuyệt vời. Sẽ kiểm tra nó ra để xác nhận và chuyển đổi số. – djmj

+0

Vâng! Tất nhiên bạn có thể! – ThierryB

Các vấn đề liên quan