2012-02-29 30 views
7

Tôi có một POJO có tên là thể thao với các thuộc tính sportID, sportName, số người chơi. Sử dụng tính năng xác nhận có chú thích Tôi đã viết ràng buộc chú thích của riêng mình để kiểm tra xem sportName có tồn tại trong cơ sở dữ liệu hay không. Nó hoạt động tuyệt vời khi cố gắng để thêm một sportName, tuy nhiên nếu tôi cố gắng cập nhật người chơi mà không thay đổi sportName xác nhận không thành công là tốt.Xác nhận chú thích mùa xuân - Kiểm tra duy nhất trên bản cập nhật vs thêm

Có cách nào để chuyển vào thông số trong xác thực được chú thích không? Ví dụ, tôi muốn chuyển trong sportID đến kiểm tra contraint sportName để tôi có thể loại trừ ID đó trong truy vấn db.

Hoặc có cách nào tốt hơn để thực hiện việc này không? Trong trình điều khiển của tôi, tôi có nên cho phép Spring xác thực các đầu vào (với @Valid) và sau đó nếu không có lỗi, hãy gọi hàm hợp lệ để kiểm tra các quy tắc nghiệp vụ không?

Trả lời

3

Cách tốt hơn là sử dụng Nhóm xác thực. (Spring MVC and JSR-303 Validation Groups)

Sau đó, bạn có thể có nhóm xác thực mặc định mà không có "trình xác thực không thoát". Và có một nhóm phụ với "không xác nhận thoát khỏi". Điều này sẽ cho phép bạn kích hoạt "validator không thoát" chỉ khi bạn cần nó. (Thật không may là nó không được hỗ trợ trực tiếp trong Spring 3.0, ở đó bạn phải bắt đầu xác nhận "bằng tay")

Một cách khác là không triển khai trình xác nhận như trình kiểm chứng trường, nhưng giống như trình xác nhận lớp. - Xem xét các giải pháp khác nhau được thảo luận để xác thực trường chéo in this Stack Overflow Question. Nó sẽ cung cấp cho bạn một ý tưởng làm thế nào để truy cập vào trường id.

+0

Sử dụng liên kết bạn đã gửi cho tôi và nó hoạt động. Tôi thực sự đọc rằng ngày hôm qua nhưng không thể tìm ra cách để vượt qua một int thông qua nhưng nhận ra khi tôi đã thực hiện nó mà nó đang tìm kiếm một String của tên của trường và mã BeanUtils.getProperty là những gì thực sự nhận được giá trị, Sau đó tôi có thể truyền dưới dạng Số nguyên. – Felix

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