2012-02-15 60 views
11

tôi muốn cho phép số nguyên chỉ tích cực cho các lĩnh vực bao gồm số zero.How tôi có thể xác định xác nhận này sử dụng JSR 303.
tôi đã cố gắngValidate nguyên dương

  1. @Min(value=0 message = "msg1") - Nhưng nó phép giá trị float như 1.2.

  2. @Digits(fraction = 0, integer = 10, message ="msg2") - Nó chấp nhận giá trị âm.

  3. @Min(value=0, message = "msg1")
    @Digits(fraction = 0, integer = 10, message ="msg2") - Nó hoạt động tốt nhưng đôi khi cả những thông điệp ví dụ msg1msg2 được hiển thị.

Mọi đề xuất?

Cảm ơn!

+0

Bất kỳ lý do đặc biệt mà bạn không sử dụng một trường Integer? – Perception

+0

@Perception: Tôi đang làm việc với ứng dụng cũ và không thể thay đổi ngay bây giờ. – xyz

+0

Sử dụng hạn chế tùy chỉnh? - http://nonrepeatable.blogspot.com/2010/05/creating-custom-jsr-303-constraint.html –

Trả lời

10

Có vẻ như bạn đang tìm kiếm các số tự nhiên, tôi nghĩ bạn có thể sử dụng mẫu regex để có được kết quả mong muốn. Một cái gì đó như

@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")

+9

nhưng thật đáng buồn nó không thể được áp dụng cho số nguyên – fmchan

+0

@fmchan cho số nguyên, không phải là '@ Min' giải pháp? Tôi không thấy điểm trong regexp cho một số nguyên – eis

12

Chỉ cần sử dụng các chú thích @Min trong đậu của bạn:

@Min(value = 0L, message = "The value must be positive") 
private Double value; 
2

Nếu bạn sử dụng hibernate-validator sau đó bạn có thể tạo ra một hạn chế tùy chỉnh mà kết hợp @Min@Digits từ tùy chọn thứ 3 bởi sử dụng @ConstraintComposition(AND). Khi bạn thêm @ReportAsSingleViolation, chỉ thông báo tùy chỉnh mới được hiển thị.

1

của nó tốt hơn để sử dụng nhiều chú thích như dưới đây để biết các số dương

@Range(min = 0l, message = "Please select positive numbers Only") 

Đối với số âm

@Range(min = -9223372036854775808l, max = 0l, message = "Please select Negative numbers Only") 
+2

Tại sao nó tốt hơn? – naXa

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