Validation Framework trong Struts 2 cung cấp rất nhiều Validator đã được xây dựng sẵn (còn được gọi là Bundled Validator) cho email, string, int, double, url, date, … Vì thế, bạn không cần cung cấp trình logic tường minh cho email, double, url, …
Giới thiệu validation Interceptor
Nó thực hiện trình validation với các qui tắc xác nhận đã cho và thêm các thông điệp lỗi ở cấp độ trường (field level) và cấp độ action (action level). Nó làm việc kết hợp với workflow Interceptor để hiển thị các thông điệp lỗi. Trong validation Interceptor, không có tham số nào được định nghĩa.
Lợi thế của Bundled Validator
- Sử dụng các Bundled Validator này giúp cho chúng ta phát triển dự án nhanh hơn bởi vì bạn không cần xác định các Validator phổ biến.
Trong chủ đề Bundled Validation này, chúng ta sẽ cùng tìm hiểu về các validator sau:
- requiredstring validator
- stringlength validator
- email validator
- date validator
- int validator
- double validator
- url validator
- regex validator
Hai cách để sử dụng Bundled Validator:
- Plain-Validator (là validator mà không có trường nào)
- Field-Validator
Trong các chương tiếp theo, chúng ta sẽ thấy ví dụ đầy đủ về Bundled Validator. Tiếp theo, chúng ta phân biệt các điểm khác nhau giữa Plain-Validator Syntax và Field-Validator Syntax.
Plain-Validator trong Struts 2
Plain-Validator có thể được sử dụng cho các validator cấp độ action. Trong trường hợp này, một validator đơn có thể được áp dụng cho nhiều trường. Nhưng điểm hạn chế của phương pháp này là chúng ta không thể áp dụng nhiều validator cho một trường đơn. Dưới đây là ví dụ đơn giản minh họa plain-validator:
<validators> <!-- Vi du cho Plain Validator --> <validator type="requiredstring"> <param name="fieldName">username</param> <param name="trim">true</param> <message>username la bat buoc</message> </validator> </validators>
Field-Validator trong Struts 2
Field-Validator có thể được sử dụng cho các validator cấp độ trường. Trong trường hợp này, nhiều validator có thể được áp dụng cho một trường. Ví dụ, bạn có thể áp dụng reqired và email validator trên trường email. Ngoài ra, mỗi trường có thể hiển thị các thông điệp khác nhau.
Hạn chế của phương pháp này là chúng ta không thể áp dụng một validator chung tới nhiều trường như trong trường hợp của plain-validator.
Dưới đây là ví dụ đơn giản cho field-validator:
<validators> <!-- Vi du cho Field Validator --> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>username la bat buoc</message> </field-validator> </field> </validators>
Loại validator nào tốt hơn?
Apache Struts đề nghị nên sử dụng field validator bởi vì nó linh hoạt hơn.