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
)