Trier la liste d'objets à Vitesse modèle de Liferay
J'ai créé une structure dans Liferay comme ci-dessous
<root>
<dynamic-element name='header' type='text' index-type='' repeatable='true'>
<dynamic-element name='headerlink' type='text' index-type='' repeatable='false'> </dynamic-element>
<dynamic-element name='location' type='text' index-type='' repeatable='false'> </dynamic-element>
<dynamic-element name='description' type='text_box' index-type='' repeatable='false'> </dynamic-element>
<dynamic-element name='date' type='text' index-type='' repeatable='false'></dynamic-element>
</dynamic-element>
</root>
Maintenant d'en-tête reproductible bloc, j'ai 4-5 élément de blocs de même. Chacun d'avoir différents "date de valeur" à l'intérieur". jour" est simple type de texte. format de la date (jj/mm/aaaa)
Maintenant je veux afficher tous les éléments dans l'ordre de tri basé sur la date de saisie.
Mon template est comme ci-dessous.
<ul>
#set($count = 0)
#foreach( $nm in $header.getSiblings())
#set($content="content"+$count)
<li id="$content">
<div class="event">
#set($monthnameid="month"+$count)
#set($dayid="day"+$count)
<p class="date-section">
<span class="month" id="$monthnameid">$nm.date.data</span>
<span class="date" id="$dayid"></span>
</p>
<p class="event-detail-section">
#if($nm.headerlink.data !="")
<span class="event-title"><a class="event-link" href="$nm.headerlink.data">$nm.data</a></span>
#else
<span class="event-header">$nm.data</span>
#end
#if($nm.description.data.toString().length() >100)
<span class="event-description">$nm.description.data.toString().substring(0,100)</span>
#else
<span class="event-description">$nm.description.data.toString()</span>
#end
<span class="event-location">Location: $nm.location.data</span>
</p>
</div>
</li>
#set($count = $count +1)
#end
</ul>
Je ne suis pas au courant au sujet de comment peut-on trier les objets à l'intérieur de la vitesse.
Toute aide serait grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer utilitaire bocal et le mettre dans les serveurs lib dossier de sorte qu'il est disponible pour toutes les applications.
Vous avez besoin pour créer projet java, placez le code ci-dessous à partir de chez elle (modifier pour vos besoins).
Exporter le jar et le copier sur le serveur. Redémarrez votre serveur si il est en cours d'exécution.
Que la mise à jour de votre vitesse de modèle ainsi que sur le dessus il a
va que du contenu original de vous un modèle.
Avis de fin de la première vitesse de la ligne de
"date" est le nom du champ qui contient votre date, "asc" est une sorte de paramètre (il peut être "desc") et le dernier paramètre est le format de date.
Mise à JOUR:
Deuxième de deux vitesse de lignes à partir de ci-dessus a été montrant dans le rendu html, donc j'ai mis à jour pour ne pas être montré 🙂
Mise à JOUR:
Pour plus de question en commentaire
Ajouter classe supplémentaire à votre bocal (à partir de ci-dessus)
et de la vitesse du modèle mis
En supposant
$header.getSiblings()
est la liste que vous souhaitez filtrer.J'ai eu de bons résultats avec la Vitesse $sortTool.
Un exemple peut être trouvé ici, au bas de la page
http://www.liferay.com/community/forums/-/message_boards/message/11146823
Le helparray ne peut pas être évitée.
Depuis vos dates n'ont pas le format aaaammjj vous avez également besoin d' $dateTool.jour de mettre la date dans le tableau comme une situation Comparable.