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
)