Vedo che il name , title , status e remarks i campi sono tutti String (come da commenta
) così nel for loop dovresti lanciare Object come String e non hai bisogno dei quattro ArrayList per questo.
Ecco come apparirà il tag di riga:
<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>
Ecco fatto, dovrebbe funzionare.
Penso che un modo più pulito sarebbe avere un POJO definito che memorizzerebbe questi valori e quindi è possibile restituire l'elenco del POJO. Tuttavia, non ho provato il secondo approccio.
Un altro approccio standard consiste nell'includere campi extra in uno qualsiasi dei *Impl dell'entità e poi restituendo l'elenco di quell'entità, nel tuo caso suppongo che tu abbia Student e Attendance entità, quindi puoi inserire i campi status &remarks in StudentImpl e quindi restituire un List<Student> oppure inserisci fname in AttendanceImpl e restituisci List<Attendance> dal metodo di ricerca. (aggiornato dopo questo commento
)