Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeigen Sie Daten aus benutzerdefinierten Abfragen (verbundene Tabellen) im Liferay-Suchcontainer an

Ich sehe, dass der name , title , status und remarks Feld sind alle String (gemäß Ihrem Kommentar ) also im for Schleife sollten Sie das Object umwandeln als String und Sie brauchen die vier ArrayList nicht dafür.

So würde das Zeilen-Tag aussehen:

<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>

Bitte schön, das sollte funktionieren.

Ein saubererer Weg wäre meiner Meinung nach, ein POJO zu definieren, das diese Werte speichert, und dann kann die Liste des POJO zurückgegeben werden. Den zweiten Ansatz habe ich allerdings noch nicht ausprobiert.

Ein weiterer Standardansatz besteht darin, zusätzliche Felder in eines der *Impl-Elemente der Entität aufzunehmen und dann die Liste dieser Entität zurückzugeben, würde ich in Ihrem Fall annehmen, dass Sie Student haben und Attendance Entitäten, so dass Sie die Felder status setzen können &remarks in StudentImpl und dann eine List<Student> zurückgeben oder geben Sie fname ein in AttendanceImpl und List<Attendance> zurückgeben aus der finder-methode. (aktualisiert nach diesen Kommentar )