20 October 2016

Struts Framework: Validation Login [P6]

Cấu trúc Update [Phần 5] đã xong
[Phần 6] Sử dụng Validation trong Struts Framework
Khái niệm về quản lý error trong Struts Framework (Struts Error Management)
A - Struts hỗ trợ 02 class quản lý lỗi đó là ActionError ActionErrors
  • Class ActionError dùng để xử lý và trình bày lỗi khi lỗi được phát sinh thông qua ActionMessage. ActionError class nằm trong gói org.apache.struts.action
  • Class ActionErrors dùng để tạo ra collection để thu thập một tập lỗi trong ActionError.
  • Class ActionMessage
  1. Chứa đựng thành phần liên quan đến message liên quan đến lỗi trong 02 thành phần class nêu ở trên
  2. Một object ActionMessage chứa 02 thành phần: phần thứ nhất là key dùng để truy cập message, phần còn lại dùng để truyền tham số (place holder) để đưa các thông tin cần thiết để tạo ra message có nghĩa

B - Để xử lý lỗi trong quá trình nhập liệu Struts đưa ra 02 cách để xử lý đó là lập trình trực tiếp trong codekhai báo thông qua việc sử dụng validation framework – một plugin của Struts Framework
  • Lập trình trực tiếp

-Người lập trình cài đè overriding phương thức validate() trong Action Form Bean-Thực hiện cài đặt việc xử lý liên quan đến lỗi của chương trình thông qua các thành phần quản lý lỗi nêu ra ở trên, cụ thể là trong quá trình kiểm tra nếu không thỏa yêu cầu chúng ta sẽ add message sử dụng ActionMessage vào ActionError tương ứng-Cơ chế hoạt động:
-Sau khi user nhập liệu trên form và submit thông tin trở về server-Trong struts framework, request được action Servlet chuyển đến ActionForm, vì action Form đã được cài đặt hàm validate do vậy dữ liệu sẽ được checking trong hàm validate theo nội dung cài đặt-Hàm validate đươc xem như là lính canh hay là đối tượng kiểm soát, nếu như không có Error nào phát sinh thì -request sẽ đuợc chuyển đến Action Class tương ứng được mapping trong struts-config-Ngược lại, khi có lỗi phát sinh, ActionError khác rỗng thì request sẽ không đưa đến Action mà container hay Action Servlet sẽ response lại errors về phía client – browser cho người dùng
  • Validation Framework

- Hỗ trợ chức năng validate trên form trên cả client (browser) lẫn server.- Phát sinh cả code javascript trên server để validate form nhập liệu.- Sử dụng sub class của DynaValidatorForm để validate trên server.- Sử dụng tập tin validator-rules.xml
- Định nghĩa các constraints dùng javascripts cho validate
- Các constraints này được áp dụng trong tập tin validation.xml (xác định validate cụ thể cho từng thuộc tính hay từng field áp dụng cho form bean)
- Config để validator framework để hỗ trình bày error trên client thông qua file truts-config.xml và tạo message báo lỗi qua *.properties- Kích hoạt validation trên action bằng cách thiết lập thuộc tính validation=“true” trong action-mapping- Các thành phần trong tập tin validator-rules.xml
- form-validation: root của tài liệu xml này
- global: xác định thành phần của rules và có thể truy cập từ các form.
- validator: xác định đối tượng validator – constraints
  • name: tên validator
  • classname: tên class form bean
  • method: tên phương thức trong form bean
  • methodParams: các tham số truyền cho phương thức
  • msg: các message báo lỗi
  • depends: xác định validation constraints được áp dụng cho từng đối tượng cụ thể
  • jsFunctionName: tên của chức năng javascript
  • javascript: chứa code validation của javascript trên client
- Các thành phần trong tập tin validation.xml
- form-validation: root- global: chứa đựng các constant element.- constant: xác định các pattern
- constant-name: tên constant
- constant-value: giá trị constant
- formset: chứa đựng các form element.
- form: xác định thành phần của form
  • name: tên form chứa các field element xác định thành phần cần validation
- field: xác định validation trên control trên form
  • property: xác định tên field trên form bean
  • depends: xác định constraint áp dụng từ validator-rules.xml
  • Chứa các thiết lập cho tham số qua arg
- arg:
  • key dùng xác định giá trị trong việc xuất thông báo lỗi
  • Chứa các khai báo thông qua thuộc tính var để xác định các ràng buộc cần validation
- var:
  • var-name: điều kiện validation
  • var-value: công thức validation
  • Struts Validation Framework
  • Trong phần code bổ sung trên chúng ta thấy html:message giúp chúng ta lấy tập lỗi về và gán vào attribute error để có thể in ra màn hình tất cả lỗi
  • logic:messagePresent tag được dùng để kiểm tra nếu lỗi khác rỗng thì mới vào phần thân của tag để xử lý
  • Tiếp theo, bởi vì chúng ta cần validation bằng cách lập trình trực tiếp, do vậy chúng ta mở tập tin LoginActionForm.java để cài đặt phương thức validate
  • Trong tập tin LoginActionForm.java, chúng ta gõ chữ valid và nhấn tổ hợp phím ctrl + space bar để chọn hàm validate có tham số HttpServletRequest

  • Chúng ta thực hiện cài đặt hàm validate cụ thể nếu kích thước chuỗi của username là bằng 0 thì chúng ta sẽ add message tương ứng vào ActionMessage và đưa vào ActionErrors, tương tự cho password

Lưu ý:
  • Giá trị tạo lập trong Action Message không phải là giá trị message trình bày mà là key value để chúng ta khai báo trong message resource (tập tin property) để tạo nên sự uyển chuyển trong việc trình bày về phía người dùng
  • Chúng ta nên đặt theo dạng để dễ nhớ và dễ hiểu dạng tên_Form.tên_Field_validation.tên_ràng_buộc


- Chúng ta tìm tập tin ApplicationResources.properties trong com.myapp.struts để bổ sung key message và message tương ứng cần trình bày. Chúng ta truy cập tập tin này trong struts-config đã tự động set default reference đến tập tin này
- Chúng ta bổ sung message (Lưu ý: nên copy toàn từng nhãn dán vào cuối file và đưa ra định nghĩa để tránh sai sót)

  • Chúng ta mở lại tập tin struts-config.xml, di chuyển đến phần action của phần login, chúng ta nhìn thấy như sau

  • Validation được được xác định là false nghĩa là struts sẽ không kích hoạt được hàm validation khi request được chuyển đến action form, do vậy, chúng ta sẽ bỏ thuộc tính này cũng có nghĩa thiết lập validate là true



  •  Chúng ta đã cấu hình hoàn tất validation lập trình trực tiếp cho Login
  • Start Server JBoss, Build Project, Deploy và Test

Khi Chưa nhập
 Để trống password
 Để trống username
 Đăng nhập thành công

0 nhận xét:

Post a Comment

 

BACK TO TOP

Xuống cuối trang