Saya melihat bahwa name , title , status dan remarks field semuanya String (sesuai komentar
) jadi di for loop Anda harus melemparkan Object sebagai String dan Anda tidak memerlukan keempat ArrayList untuk ini.
Berikut adalah tampilan tag baris:
<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>
Ini dia, ini seharusnya berhasil.
Cara yang lebih bersih menurut saya adalah dengan menetapkan POJO yang akan menyimpan nilai-nilai ini dan kemudian daftar POJO dapat dikembalikan. Saya belum mencoba pendekatan kedua.
Pendekatan standar lainnya adalah menyertakan bidang tambahan di salah satu *Impl . entitas mana pun dan kemudian mengembalikan daftar entitas itu, dalam kasus Anda, saya akan menganggap Anda memiliki Student dan Attendance entitas, sehingga Anda dapat meletakkan bidang status &remarks di StudentImpl dan kemudian kembalikan List<Student> atau masukkan fname di AttendanceImpl dan kembalikan List<Attendance> dari metode pencari. (diperbarui setelah komentar ini
)