Menu

Liferay 6.2: Xử lý nhiều action

Trong bài trước, chúng ta có hai file view.jspedit.jsp. Mặc định, khi mở portlet ra thì sẽ hiển thị nội dung của file view.jsp. Sau đó, ta nhấn vào liên kết để mở file edit.jsp. Trong file edit.jsp ta sẽ nhập vào tên và truyền xuống controllercontroller xử lý dữ liệu rồi trả lại view.jps.
Ta thấy, ở đây có hai thao tác, i) mở file edit.jsp thao tác này được gọi là render và ii) chuyển dữ liệu từ file edit.jsp xuống controller ta gọi là action. Câu hỏi đặt ra, nếu như chúng ta muốn có nhiều thao tác gửi dữ liệu xuống controller thì phải làm thế nào?Bài này sẽ giải đáp thắc mắc trên.
Bài toán: Ta thực hiện một công việc như sau: tại file view.jsp ta sẽ cung cấp hai đường link. i) Một cho phép chúng ta nhập vào tên và in lại lời chào và ii) Nhập vào email in ra thông báo email đã được gửi ở màn hình console. Nội dung file view.jsp sẽ như sau:
Ta khi chạy và kéo portlet vào page ta sẽ có nội dung như sau:
Giao diện view
Ta thấy có 2 liên kết ở đây, lúc này ta sẽ thực hiện công việc viết nội dung cho các file edit.jsp và email.jsp. File edit.jsp thì tương tự như bài trược và nội dung như sau:
Nội dung so với hướng dẫn của bài trước thì rất giống nhau. Nhưng để ý kĩ lại thì bạn sẽ thấy có một điểm khác nhau. Các bạn có phát hiện ra đó là điểm nào không? Bạn để ý trong thẻ portlet:actionURL nhé chúng ta thấy có thêm thuộc tính name="editName" thuộc tính này để làm gì? Chúng ta sẽ giải thích sau. Bây giờ, muốn xử lý dữ liệu trên màn hình edit.jsp xuống controller thì ta phải viết một hàm để đón nội dung mà ta gửi xuống đúng không? Ta sẽ viết một phương thức như sau:
Bạn thấy ở trên, ta có phương thức editName với hai tham số đầu vào là ActionRequestActionResponse. Và kết quả vẫn như bài trước.
Xử lý dữ liệu thành công
Tương tự, ta viết một file nữa là email.jsp trong cùng thư mục với thư mục chứa edit.jsp. Nội dung file email.jsp như sau.
Nội dung file email.jsp cũng tương tự nội dung của file edit.jsp. Và cũng tương tự ta sẽ viết phương thức sendEmail trong controller như sau:
Trong phương thức này, chúng ta sẽ đón 3 tham só được truyền từ màn hình email.jsp xuống controller và sau đó in ra màn hình console.
Deploy lại chương trình và click vào liên kết để mở giao diện nhập email như sau:
Nhập thông tin của một email
Ta nhập nội dung cho form này và nhấn và nút Save. Trên màn hình console của eclipse sẽ có nội dung như sau:
Thông báo gửi email.
Vậy, từ hai form trên bạn đã kết luận được gì rồi? Ta sẽ thấy trong thẻ portlet:actionURL có thuộc tính name. Giá trị của thuộc tính này chính là tên của phương thức mà sẽ được gọi để xử lý những yêu cầu tương ứng của chúng ta. Do đó, trong một portlet có nhiều thao tác xử lý dữ liệu như thêm, ghi và xóa thì ta tách riêng ra từng phương thức khác nhau.
Trong bài này, chúng ta đã biết cách để thực hiện các portlet với nhiều thao tác xử lý dữ liệu. Nhưng sau khi xử lý dữ liệu thì sẽ trả lại màn hình view.jsp. Vậy, câu hỏi đặt ra là ta có thể trả về các view khác nhau hay không? Câu trả lời sẽ có trong post tiếp theo.
Và cuỗi cùng là mã nguồn của bài này. Bạn tải về ở đây nhé.

2 nhận xét:

  1. Bài viết hay.Cám ơn bạn nhé.

    Trả lờiXóa
    Trả lời
    1. Cảm ơn bạn @hungo4501 đã ủng hộ. Mong bạn cho ý kiến để mình có thể hoàn thiện hơn các bài viết của mình. Chúc bạn vui vẻ!

      Xóa