Mysql
 sql >> Base de données >  >> RDS >> Mysql

Afficher les données de la requête personnalisée (tables jointes) dans le conteneur de recherche liferay

Je vois que le name , title , status et remarks champ sont tous String (selon votre commentaire ) donc dans le for boucle, vous devez caster le Object sous forme de String et vous n'avez pas besoin des quatre ArrayList pour cela.

Voici à quoi ressemblerait la balise de ligne :

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

Voilà, ça devrait marcher.

Je pense qu'une manière plus propre serait d'avoir un POJO défini qui stockerait ces valeurs, puis la liste des POJO pourrait être renvoyée. Je n'ai cependant pas essayé la deuxième approche.

Une autre approche standard consiste à inclure des champs supplémentaires dans l'un des éléments *Impl de l'entité puis en renvoyant la liste de cette entité, dans votre cas, je suppose que vous avez Student et Attendance entités, vous pouvez donc mettre les champs status &remarks dans StudentImpl puis retourne un List<Student> ou mettre fname dans AttendanceImpl et renvoie List<Attendance> de la méthode finder. (mis à jour après ce commentaire )