Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exibir dados da consulta personalizada (tabelas unidas) no contêiner de pesquisa do liferay


Vejo que o name , title , status e remarks campo são todos String (conforme seu comentário ) então no for loop você deve lançar o Object como uma String e você não precisa dos quatro ArrayList por esta.

Veja como ficaria a tag de linha:
<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>

Pronto, isso deve funcionar.

Uma maneira mais limpa eu acho que seria ter um POJO definido que armazenasse esses valores e então a lista do POJO pudesse ser retornada. Eu não tentei a segunda abordagem embora.

Outra abordagem padrão é incluir campos extras em qualquer um dos campos *Impl da entidade e, em seguida, retornando a lista dessa entidade, no seu caso, suponho que você tenha Student e Attendance entidades, então você pode colocar os campos status &remarks em StudentImpl e, em seguida, retornar um List<Student> ou coloque fname em AttendanceImpl e retorne List<Attendance> do método localizador. (atualizado após este comentário )