Menu

Liferay 6.2: Cấu hình portlet

Sau khi tạo ra một portlet, bạn hi vọng nó sẽ được sử dụng ở nhiều nơi. Đây thực sự là một hi vọng chính đáng. Tuy nhiên, nếu bạn tạo ra một portlet cứng nhắc sẽ không thể tái sử dụng được. Do vậy, trong quá trình thiết kế portlet, bạn phải đảm bảo rằng portlet của mình thực sự linh hoạt và dễ dàng tùy biến theo từng nhu cầu cụ thể.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách mở rộng cấu hình portlet.

Giới thiệu

Nếu đã từng làm việc với các portlet của Liferay, bạn có thể chỉnh sửa các tham số của mỗi portlet bằng cách nhấn vào biểu tượng Cấu hình (Configuration) ở góc trên bên trái của mỗi portlet và chọn Cấu hình (Configuration).
Nhấn vào "Cấu hình" để mở cửa sổ cấu hình như hình dưới
Sẽ có một cửa sổ được mở lên với hai tab mặc định là Quyền hạn (Permission) và Chia sẻ (Share). Ngoài hai tab mặc định trên, một số portlet còn có thêm tab Cài đặt (Setup), tab này sẽ chứa nội dung cấu hình được thêm vào. Khi bạn viết các trang JSP để sửa đổi cấu hình của portlet thì nội dung bạn thêm vào sẽ được hiển thị bên trong tab này.
Các tab mặc định

Cấu hình

Có hai phần mà chúng ta cần quan tâm khi muốn thêm các tham số cấu hình cho một portlet đó là Front-end (jsp) và Back-end (java class). Chúng ta sẽ đi xem xét từng phần một nhé.

Back-end

Chúng ta sẽ tạo ra lớp CustomConfigurationAction được kế thừa từ lớp DefaultConfigurationAction. Lớp CustomConfigurationAction có tác dụng điều hướng và xử lý yêu cầu mà Front-end gửi xuống. Để cho hệ thống biết lớp CustomConfigurationAction đảm nhận nhiệm cấu hình của một portlet nào đó. Ta sẽ thêm thẻ <configuration-action-class>com.blogspot.chingovan.CustomConfiguration</configuration-action-class< vào trong file liferay-portlet.xml như sau (dòng số 9):
Ở lớp CustomConfigurationAction, ta cần phải ghi đè (override) hai phương thức của lớp cha là render và processAction.
  • Phương thức render sẽ nói cho hệ thống file jsp nào sẽ được gọi khi bạn mở giao diện cấu hình portlet.
  • Phương thức processAction sẽ xử lý các yêu cầu mà front-end gửi xuống.

Trong đoạn code trên, khi bạn mở cấu hình của portlet sẽ thấy một tab trắng (Cài đặt (Setup)) được thêm vào như hình dưới:
Thêm mới tab Cài đặt (Setup)

Front-end

Front-end là một file jsp (ví dụ edit_configuration.jsp) được điều hướng đến bởi phương thức render trong lớp CustomConfigurationAction. Trong file này, ta sẽ viết một form với các trường là các tham số cấu hình của portlet. Ví dụ, ta sẽ lưu lại một lời chào chẳng hạn (greeting). Rồi tham số này sẽ được hiển thị trên portlet của chúng ta.
Hiện tại, tab Cài đặt không có gì cả (hình trên). Nội dung của tab này chính là nội dung của file edit_configuration.jsp mà phương thức render (trong lớp CustomConfigurationAction chuyển đển). Chúng ta sẽ xem nội dung của file edit_configuration.jsp trong phần tiếp.

Ghi và đọc các tham số

Ghi các tham số

Các tham số sẽ được gửi từ Front-end, cụ thể là trong form ở file edit_configuration.jsp với nội dung như sau:

Giao diện cập nhật tham số của portlet sẽ như sau:
Giao diện sử tham số cấu hình portlet
Ta nhập dữ liệu và nhấn nút "Ghi lại". Lúc này, phương phương thức processAction của lớp CustomConfigurationAction sẽ được gọi để xử lý và lưu trữ các cấu hình này. Hãy xem đoạn code sau:
Trong đoạn code trên, chúng ta cần quan tâm một số dòng sau đây:
  • Dòng 6-7: Lấy cấu hình hiện tại của portlet.
  • Dòng 10: Lấy các giá trị được gửi xuống.
  • Dòng 13: Thêm các giá trị mới vào vào biến cấu hình của portlet.
  • Dòng 16: Lưu trữ các tham số cấu hình của portlet vào cơ sở dữ liệu.
  • Dòng 19: Gửi lại thông báo đã cập nhật thành cộng
Sau khi thực hiện lưu trữ, hãy mở cơ sở dữ liệu lên và tìm bảng PortletPreferences. Chúng ta sẽ thấy, các tham số cấu hình của một portlet được lưu trữ dưới dạng xml như hình sau:
Cấu hình portlet được lưu trong cơ sở dữ liệu

Đọc các tham số

Các tham số cấu hình của portlet sẽ được sử dụng vào các mục đích của bạn. Vậy, làm thế nào để ta có thể đọc được các tham số này từ cơ sở dữ liệu? Thật may, Liferay đã hỗ trợ chúng ta rất nhiều và bạn chỉ cần truyền đúng tham số là sẽ lấy được giá trị mong muốn.
Đoạn code dưới đây minh họa cách đọc cấu hình của một portlet (dòng) và trong ví dụ này, ta chỉ sử dụng tham số trong trường hợp vô cung đơn giản đó là in ra tham số đã ghi.

Trong đoạn code trên, chúng ta để ý ở dòng số 4. Ta lấy giá trị của các tham số cấu hình từ đối tượng portletPreferences. Đối tượng này được cung cấp sẵn. Hình dưới đây là kết qủa cuối cùng:
Giá trị của một tham số cấu hình được in ra màn hình

Kết luận

Bài viết này giúp cho portlet của bạn linh hoạt hơn và áp dụng được nhiều nơi mà không cần phải sửa lại mã nguồn. Nó là một hướng dẫn đơn giản và hướng đến những người mới bắt đầu làm quen với việc phát triển ứng dụng trên nền tảng Liferay.
Bạn có thể tải mã nguồn đầy đủ tại đây.

Không có nhận xét nào:

Đăng nhận xét