Widzę, że name , title , status i remarks wszystkie pola to String (zgodnie z twoim komentarz
), więc w for pętla, powinieneś rzutować Object jako String i nie potrzebujesz czterech ArrayList w tym celu.
Oto jak wyglądałby tag wiersza:
<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>
Proszę bardzo, to powinno działać.
Myślę, że bardziej czystszym sposobem byłoby zdefiniowanie POJO, które będzie przechowywać te wartości, a następnie zwrócenie listy POJO. Nie próbowałem jednak drugiego podejścia.
Innym standardowym podejściem jest uwzględnienie dodatkowych pól w dowolnym z *Impl encji a następnie zwracając listę tego podmiotu, w twoim przypadku zakładam, że masz Student i Attendance encje, dzięki czemu możesz umieścić pola status &remarks w StudentImpl a następnie zwróć List<Student> lub umieść fname w AttendanceImpl i zwróć List<Attendance> z metody wyszukiwania. (zaktualizowano po ten komentarz
)