Wie wiederhole ich eine Java-Liste in Zeichenkette?

7

Ich möchte die Ergebnisse einer Hibernate-Abfrage innerhalb von StringTemplate durchlaufen. Ich habe nach Beispielen gesucht, aber ich kann nichts finden.

können Sie bitte helfen? Danke

    
mrjayviper 26.08.2013, 05:08
quelle

2 Antworten

18

Die Syntax sieht wie

aus %Vor%

Zusammenfügen in Java:

%Vor%

In diesem Beispiel iteriere ich über die Liste und drucke jedes. Das Ergebnis, das gedruckt werden würde, ist:

%Vor%

Wir können die Syntax untersuchen, die dies ermöglicht. Vergessen Sie nicht, dass die Standardtrennzeichen in StringTemplate kleiner als < und größer als > sind. Da wir keine anderen Trennzeichen angegeben haben, werden sie in unserem Beispiel verwendet. Weitere Informationen zu Begrenzern

%Vor%

Diese Menge von Symbolen, Doppelpunkt : und die offene und geschlossene Klammer {} kann als "für jeden" gelesen werden. In der Beispielvorlage wird der Code für jede team in teams print team gelesen. Die linke Seite der vertikalen Pipe | gibt die Variable an, die für jede Iteration erstellt wird. Es wird das aktuelle Team von der Liste der Teams halten. Der Ausdruck setzt sich aus der <team> auf der rechten Seite der vertikalen Pipe | und der linken Seite der schließenden Klammer } zusammen. Alles, was sich auf der rechten Seite der vertikalen Pipe | und vor der schließenden Basis } befindet, wird zum Ausdruck ausgewertet.

%Vor%

Um auf dem Konzept aufzubauen, verwenden wir eine komplexere Datenstruktur.

%Vor%

Jetzt können wir ein paar Spieler für unser Team erstellen:

%Vor%

Geben Sie ein Ergebnis von

%Vor%

Ein paar Dinge zu beachten. Wir haben nicht direkt auf das Alter und den Namen der Eigenschaften zugegriffen. ST nannte die Methoden getAge und getName. ST schaut nicht auf die Eigenschaften. Stattdessen sucht es nach den Zugriffsmethoden.

Was wäre, wenn wir nur über eine Liste mit einer anderen Liste iterieren wollten? Das können wir auch. Lasst uns zuerst unsere Datenstruktur aufbauen und sie mit ein paar Listen füllen.

%Vor%

Die Vorlage sieht wie folgt aus:

%Vor%

Unsere Vorlage ist in diesem Fall nur eine Kombination. Die äußere Shell wird über die Liste, die wir übergeben werden, iterieren.

%Vor%

Dann werden wir für jeden Gegenstand die Gegenstände in seiner Liste ausdrucken.

%Vor%

Sobald wir alles zusammengefügt haben

%Vor%

Wir erhalten ein Ergebnis, das wie folgt aussieht.

%Vor%

Aufbauend auf diesem Konzept können wir eine zweite Datenstruktur erstellen, die eine Liste von Spielern enthält. Dies zeigt, wie innerhalb der Iteration iteriert wird.

Zunächst benötigen wir eine Datenstruktur, die eine Liste enthält. Dafür können wir ein Team für unsere Spieler erstellen.

%Vor%

Beachten Sie, dass unser Team Spieler enthält. Diese Zusammensetzung ermöglicht es uns, zwei Iterationen aufzubauen.

Nun, da wir unsere Datenstruktur haben, können wir alles zusammenstellen, um ein paar Teams mit einigen Spielern zu bilden.

%Vor%

Nun können wir eine Vorlage erstellen und einige Details eingeben:

%Vor%

Das wird ausgedruckt

%Vor%

Unsere einfache Vorlage entspricht in etwa unserer ersten Vorlage von oben. Der einzige wirkliche Unterschied ist, dass wir eine Build-in-Methode length() verwenden. Weitere Informationen zu Funktionen finden Sie hier

Lassen Sie uns die Komplexität der Templates etwas erweitern, um sie in unserer zweiten Iteration hinzuzufügen.

Zuerst werden wir unser playersTemplate erstellen. Das ist fast identisch mit unserer playerTemplate Vorlage von oben. Der einzige Unterschied ist, dass unsere Spieler aus einem team : team.players kommen.

%Vor%

Nun werden wir eine zweite Vorlage erstellen, die die erste enthält. In dieser Vorlage können wir über Teams iterieren und für jedes Team werden wir name , Anzahl der Spieler length(team.players) und alles in playersTemplate ausdrucken.

%Vor%

Lasst uns das jetzt zusammensetzen.

%Vor%

Das wird für uns folgendes ausdrucken.

%Vor%

Nun werden Sie Ihre Vorlagen nicht wirklich auf diese Weise kombinieren wollen. Das Zusammenfügen von Strings zum Erstellen von Vorlagen ist ziemlich albern. StringTemplate bietet Tools, um diese Kombination von Teilvorlagen sehr einfach zu machen. Wenn Sie neugierig sind, Vorlagen zu kombinieren, finden Sie hier hier

    
Chuck Lowery 16.01.2014 22:05
quelle
4
%Vor%

Dieser Code funktioniert perfekt.

staffForOrg ist eine Liste meines Modells. Ich habe Hibernate verwendet, um die Datensätze abzurufen.

    
mrjayviper 27.08.2013 00:49
quelle

Tags und Links