Tôi thấy rằng name , title , status và remarks trường đều là String (theo bình luận
) vì vậy trong for vòng lặp bạn nên truyền Object dưới dạng String và bạn không cần bốn ArrayList cho điều này.
Đây là cách thẻ hàng trông như thế nào:
<liferay-ui:search-container-row className="java.lang.Object" modelVar="search">
<%--
Since an "Object[]" is nothing but an "Object", we first cast the "search"
instance to an "Object[]" and then to a "String"
--%>
<liferay-ui:search-container-column-text name='name' value='<%= (String) ((Object[])search)[0] %>' />
<liferay-ui:search-container-column-text name='title' value='<%= (String) ((Object[])search)[1] %>' />
<liferay-ui:search-container-column-text name='status' value='<%= (String) ((Object[])search)[2] %>' />
<liferay-ui:search-container-column-text name='remarks' value='<%= (String) ((Object[])search)[3] %>' />
</liferay-ui:search-container-row>
Bạn hiểu rồi, điều này sẽ hoạt động.
Một cách rõ ràng hơn mà tôi nghĩ là có một POJO được định nghĩa sẽ lưu trữ các giá trị này và sau đó danh sách của POJO có thể được trả về. Mặc dù vậy, tôi chưa thử cách tiếp cận thứ hai.
Một cách tiếp cận tiêu chuẩn khác là đưa các trường bổ sung vào bất kỳ một trong các *Impl của thực thể nào và sau đó trả lại danh sách của thực thể đó, trong trường hợp của bạn, tôi giả sử bạn có Student và Attendance các thực thể, vì vậy bạn có thể đặt các trường status &remarks trong StudentImpl và sau đó trả về một List<Student> hoặc đặt fname trong AttendanceImpl và trả về List<Attendance> từ phương pháp tìm kiếm. (cập nhật sau nhận xét này
)