Trước hết thì clone là gì? Rất đơn giản: clone là việc tạo ra một đối tượng mới có nội dung giống hết đối tượng được clone.
Liferay, Java & Programming
Liferay, Programming, Java, Algorithms, Portal, Cổng thông tin, Lập trình, Thuật toán, Liferay Vietnam, Liferay Việt Nam
Sao chép đối tượng (clone) trong Java
Liferay 7: Sử dụng Item Selector
Trong phiên bản 7, Liferay đã giới thiệu rất nhiều tính năng mới thú vụ. Một trong số chúng là Item Selector. Nói một cách đơn giản, nó là một thành phần (component) cho phép người dùng chọn nhiều loại tài nguyên khác nhau (ảnh, video, bài viết,...).
Nếu ứng dụng (portlet) của bạn cần phải chọn ảnh/video/bài viết,... từ hệ thống thì Item Selector chính một lựa chọn hợp lý. Item Selector sẽ mở ra một cửa sổ (dialog) lựa chọn cho phép bạn có thể chọn nhiều loại tài nguyên khác nhau như ảnh, video, hoặc bất kỳ dữ liệu nào.
Liferay 7: Thay đổi giao diện trang quản trị
Trong thực tế, chúng ta thường quan tâm đến giao diện của người dùng cuối (end-user) nhiều hơn so với giao diện quản trị. Chính vì vậy, giao diện quản trị thường không được đầu tư nhiều công sức. Tuy nhiên, tuy từng từ dự án, những người dùng được cấp tài khoản có thể truy cập được trang quản trị (nhân viên, biên tập viên,...). Trong trường hợp này, đương nhiên là chúng ta cần cải thiện giao diện quản trị mặc định để người dùng cảm thấy hứng thú hơn khi sử dụng ứng dụng. Bài viết này sẽ hướng dẫn cách cập nhật giao diện mặc định của Liferay 7.x.
Java 8: Có nên sử dụng filter của Stream API
Java 8 giới thiệu rất nhiều tính năng mới. Trong đó Stream (luồng) cũng là một tính năng cực kỳ hữu ích và được sử dụng thường xuyên (kết hợp với biểu thức Lambda).
Cụ thể Stream là gì? Nó là một đối tượng mới của Java được giới thiệu từ phiên bản Java 8, giúp cho việc thao tác trên danh sách (collection) và mảng (array) trở nên dễ dàng và tối ưu hơn.
Một Stream đại diện cho một chuỗi các phần tử hỗ trợ các hoạt động tổng hợp tuần tự (sequential) và song song (parallel).
Liferay 7.2/DXP: Sử dụng SystemCheckers để theo dõi trạng thái của hệ thống
Liferay 7.2 có nhiều tính năng hay so với các phiên bản trước đó. Bài viết này sẽ giới thiệu một trong số chúng, cụ thể đó là SystemCheckers. Trong các phiên bản cũ, đôi khi hệ thống đã được khởi động xong chúng ta không thấy bất kỳ lỗi gì vì nó không được ghi ra log. Tuy nhiên, chúng ta vẫn không sử dụng được một vài service hoặc module. Ví dụ, một vài service được khai báo (Declarative Service) không thể hoạt động do thiếu tham chiếu đến các service/module khác hoặc bị tham chiếu vòng.
Liferay 7.x: Đăng ký thêm loại dữ liệu vào ElasticSearch
Như chúng ta đã biết, ElasticSearch là công cụ tìm kiếm mặc định trên Liferay 7/DXP. Nó có nhiều tính năng nổi bật hơn so với Lucene trên các phiên bản Liferay cũ. Liferay sử dụng ElasticSearch cho mục đích tìm kiếm nội bộ. Ví dụ: Tìm kiếm full-tẽt, phân tích lưu trữ, auto-complete, kiểm tra chính tả, khoảng cách địa lý... Hiện tại, chung ta có thể sử dụng tất cả các tính năng này cho các Entity mà mình tạo ra bằng cách kế thừa các indexer của ElasticSearch. Bài viết này sẽ chỉ cho bạn cách dụng ElasticSearch cho các entity tự tạo.
Liferay 7.x: Hiểu về Service Tracker
Như chúng ta đã biết, Liferay DXP sử dụng framework OSGi cho môi trường cộng tác giữa các đối tượng (các đối tượng ngày được xem như các services). Khai báo các dịch vụ (Declarative Services (DS) - khái niệm quan trọng của OSGi) là cách để chia sẻ các service giữa các thành phần trong hệ thống. Khi chúng ta khai báo một lớp của Java với annotation @Component thì lớp đó được xem như là một service và sẽ được sử dụng bởi các thành phần khác. Việc sử dụng annotation @Component để biến một lớp của Java thành một service thực sự dễ cài đặt và mở rộng.
Liferay 7.x: Liên kết đến tài nguyên tĩnh (hình ảnh/js/css) trong portlet
Liferay 7: Error while buildCSS
Was passed main parameter 'sass.append.css.import.timestamps=true' but no main parameter was defined in your arg class
:wars:announcement:buildCSS
Liferay 7: Service builder và truy vấn dữ liệu
JasperReport: Giới thiệu về JasperReport
Liferay 7: How to create a new portlet?
There were many interesting features added or improved in Liferay 7. And Liferay Workspace is one of them, it is a new way to organizing our source code and recommended by Liferay. In this post, I will create a portlet by Liferay 7 default style ( it means using Liferay Workspace).
(Phiên bản Tiếng Việt - Vietnamese version)
Liferay 7: Tạo mới một portlet phiên bản 6x
Liferay 7: Tạo một portlet mới như thế nào?
English version
Ở bài viết trước, mình đã lược dịch lại những tính năng mà Liferay 7 cải tiến và bổ sung. Trong đó, Liferay Workspace là một tính năng mới, một cách tổ chức code mới được Liferay khuyến khích lập trình viên sử dụng. Trong bài viết này, mình sẽ tạo một portlet theo cấu hình mặc định của Liferay (tức là sử dụng Liferay Workspace), bài viết tiếp theo mình sẽ hướng dẫn cách cấu hình Liferay 7 để bạn có thể tạo ra các portlet theo phong cách cũ (phiên bản Liferay 6).
Java: Tham chiếu và tham trị
Liferay: Vòng đời của Portlet - Phương thức serveResource()
Liferay 6.2: Cấu hình portlet
Java: Using POI library to read and write Excel data
Vietnam version
Liferay 6.2: Window popup
Window popup is a utility which was built-in Liferay Framework. Liferay itself also used this utility in many parts. For examples: Window popup appears in permission interface or portlet configurations (if you click on gear icon at top left portlet, the windows will appear which allows changing the configurations).
In general, window popup is useful in the UI design process. So, how to use it. This post will help you
Liferay 6.2: Cửa sổ popup
Cửa sổ popup là một tiện ích được tích hợp sẵn trong Liferay. Bản thân Liferay cũng sử dụng tiện ích này ở nhiều nơi. Ví dụ như trong giao diện phân quyền sử dụng (bạn click vào đường link phân quyền sẽ có một cửa sổ được bật nên để bạn chọn các quyền phù hợp), cấu hình portlet (bạn click vào các đường link cấu hình ở phía trên bên phải của mỗi portlet, sẽ có các cửa sổ được mở lên để bạn thay đổi cấu hình, giao diện, ... của portlet).
Liferay 6.2: AlloyUI: Node and some familiar methods
Liferay has integrated AUI into its framework (click here to view detail). So, good understanding and good using AUI are the necessary skills if you want to develop the application on this framework.
In this post, I will show you the most basic component of AUI. That is Node. What is a Node? How does it work? Let's discuss it.
Liferay 6.2: AlloyUI: Node và một số phương thức hay dùng
Liferay 6.2: Action on multi-rows in Search-Container
Liferay 6.2: Xác thực (Validate) dữ liệu
Liferay 6.2: Actions on a row in Search Container
Liferay 6.2: Reset passwords
Nobody wants to forget the passwords. But it usually happens. It is easy to reset the passwords of normal or lower level users and resetting the password of the administrators is a hard work. So, this post is going to help to reset the password of test@liferay.com (or another administrator account) in this situation.
Liferay 6.2: Using SessionClicks utility
Liferay 6.2: Các vấn đề về thời gian trong Liferay
Liferay 6.2: Thao tác trên nhiều dòng trong search-container
Liferay 6.2: Thao tác trên từng dòng của search-container
Liferay 6.2: Sử dụng tiện ích SessionClicks
Liferay 6.2: Đổi mật khẩu admin/test@liferay.com
Một kỹ thuật sử dụng mảng
Liferay 6.2: Custom Dynamic query with array parameters
Liferay 6.2: Ví dụ về AJAX trong Liferay
Liferay 6.2: Các vấn đề liên quan đến đa ngôn ngữ trong Liferay
Multi-language |
Trong một thế giới rộng lớp, nếu muốn giới thiệu tới tất cả mọi người ứng dụng của mình bạn phải thể hiện nó với nhiều ngôn ngữ khác nhau. May mắn thay, Liferay đã hỗ trợ tính năng này và cung cấp những cách dễ dàng nhất để làm điều đó. Mình sẽ giới thiệu làm thế nào để sử dụng đa ngôn ngữ trong một portlet. Hãy bắt đầu nào.
Liferay 6.2: Hook và tự viết taglib
English version
Hôm nay, mình sẽ thảo luận về việc làm thế nào để viết một jsp taglib. Tại sao cần phải tự viết taglib riêng? Vì các tag này được sử dụng lại trong nhiều dự án khác nhau và các taglib trong các thư viện có sẵn không đáp ứng được nhu cầu của bạn. Ví dụ: tạo một taglib để thể hiện thông tin của một sản phẩm trong các dự án thương mại điện tử hoặc thể hiện thông tin của một quyển sách trong cửa hàng sách online,...
Liferay 6.2: Hook and Taglib
Vietnam version
Today, I am going to discuss how to create custom JSP tag-libs. Because custom JSP tags are reused in many projects, creating custom JSP tags is always necessary. For examples: creating a tag-lib to show a product information in e-commerce projects, book information in a bookstore.
SQL: Một trường hợp của lệnh UPDATE trong SQL
Postgresql: Execute some simple commands
Postgresql logo |
Liferay 6.2: Multi-language problems
Multi-language |
In the wide world, if you want to introduce your application, your program have to multi-language. Fortunately, Liferay framework supported this feature and provided easiest ways to do. I will introduce how to using multi-language in a portlet. Let's go.
Java: Sử dụng thư viện POI để đọc và ghi dữ liệu với excel
English version
Ngay khi đọc tiêu đề bài viết, bạn cũng dễ dàng đoán được ý đồ của bài này rồi đúng không? Thao tác nhập và xuất dữ liệu từ file excel là một thao tác rất thường xuyên trong công việc của chúng ta. Vậy, làm thế nào chúng ta có thể nhập và xuất những dữ liệu mà ta mong muốn. Bài này sẽ giúp bạn trả lời câu hỏi trên.
Liferay 6.2: How to use liferay-ui:form-navigator tag
Java: Singleton Pattern và kết nối với cơ sở dữ liệu trong các ứng dụng Java
Singleton pattern |
Liferay: So sánh giữa Liferay MVC va Spring MVC
Liferay MVC vs Spring MVC |