Veo que el name
, title
, status
y remarks
todos los campos son String
(según su comentario
) por lo que en el for
loop deberías lanzar el Object
como una String
y no necesitas los cuatro ArrayList
por esto.
Así es como se vería la etiqueta de la fila:
<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>
Ahí tienes, esto debería funcionar.
Creo que una forma más limpia sería tener un POJO definido que almacenaría estos valores y luego se puede devolver la lista de POJO. Sin embargo, no he probado el segundo enfoque.
Otro enfoque estándar es incluir campos adicionales en cualquiera de los *Impl
de la entidad. y luego devolver la lista de esa entidad, en su caso asumiría que tiene Student
y Attendance
entidades, para que pueda poner los campos status
&remarks
en StudentImpl
y luego devolver un List<Student>
o poner fname
en AttendanceImpl
y devolver List<Attendance>
del método del buscador. (actualizado después de este comentario
)