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, …
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.
Trong chủ đề Bundled Validation này, chúng ta sẽ cùng tìm hiểu về các validator sau:
Hai cách để sử dụng Bundled 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 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 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>
Apache Struts đề nghị nên sử dụng field validator bởi vì nó linh hoạt hơn.
Unpublished comment
Viết câu trả lời