2008-11-06 14 views
5

ich Message bin mit ein paar Adressen mit einer Vorlage wie folgt zu formatieren:Alle leichten Template-Lösungen in Java mit Unterstützung für bedingte Formatierung?

"{0}\n{1}\n{2}\n{3}, {4} {5}" 

wo

  • 0 = Straße 1
  • 1 = Straße 2
  • 2 = Straße 3
  • 3 = Stadt
  • 4 = Zustand
  • 5 = zip

Die meisten dieser Felder sind optional, wenn sie erfasst werden. Wie vermeide ich es, eine Leerzeile zu haben, wenn es zum Beispiel keine Straße 3 gibt? Ich könnte eine Vorlage wie diese verwenden "{0} {1} {2} {3} {4} {5}" und dann entweder "Straße 3 \ n" oder "" entsprechend ersetzen, aber dann die Vorlage nicht zur Verfügung stellen viel Nutzen für die Formatierung.

Gibt es eine Möglichkeit, Bedingungen in die Formatzeichenfolge aufzunehmen? Oder gibt es ein anderes, vorzugsweise leichtes Template-Tool, das bedingte Formatierung unterstützt?

Antwort

2

Ich weiß nicht, wie leicht Sie es betrachten würden, aber Apache Velocity ist eine der bekanntesten Template-Engines für Java.

1

Sie könnten einfach die Formatierung tun, wie Sie es tun, und dann leere Zeilen entfernen, indem Sie einen Lauf von mehr als einem '\n' s mit einem einzigen '\n', z.

result = result.replaceAll("\n+", "\n"); 
+0

Schöne einfache Möglichkeit, die gestellte Frage zu lösen - IMHO Einführung eines Template-Framework, nur um eine Adresse zu formatieren ist ein bisschen übertrieben. –

7

EDIT: umschreiben ...

Wenn Sie nicht über Design zu tun pflegen, dann können Sie leicht eine Template-Engine zufällig wählen, oder weil Sie seinen Namen mögen, oder was auch immer. Wenn Sie keine Kriterien für die Auswahl einer Suchmaschine haben, wen kümmert es dann, welche Sie auswählen?

Auf der anderen Seite, wenn Sie kümmern sich um Design, wie bei der Verwendung der Model-View-Controller (MVC) Design-Muster, dann Ihre Entscheidungen schnell abnehmen.

Die meisten Antworten hier betonen die Kraft der verschiedenen Template-Engines. Aber der ganze Sinn von MVC ist, dass Sie nicht mehr tun wollen, denn wenn Sie mehr in Ihren Vorlagen tun, werden Sie am Ende sehr weh tun. Geschäftslogik gehört nicht in die Ansicht, sie gehört in das Modell. Die Steuerlogik gehört in den Controller. Es gibt nur eine Vorlagen-Engine, die das MVC-Muster tatsächlich erzwingt. Wenn Sie das MVC-Muster nicht wünschen (vielleicht bewegen Sie sich darüber hinaus), hilft Ihnen diese eine Engine immer noch, sich nicht zu verletzen und ermutigt Sie, Ihre Funktionalität richtig zu partitionieren.

Es gibt wirklich nur eine gute Template-Engine: StringTemplate.Details dazu finden Sie unter http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf.

Ich habe es auf mehreren Plattformen (Python, Java, .Net) sowie viele der Alternativen und StringTemplate-Regeln verwendet.

Entscheidung abgeschlossen. Genießen. Die besten Wünsche.

5

Andere haben String-Template erwähnt, aber wir haben kürzlich zu MVEL gewechselt (was auch mehr tut, aber wirklich nicht viel Gewicht hinzufügt): http://mvel.codehaus.org/ (und ich finde es einfacher zu benutzen).

+0

Zweitens - MVEL ist großartig! – bennyl

0

Freemarker ist ziemlich gut. Es ist leicht, schnell, hat bedingte Formatierung und eine Menge anderer Funktionen.

3

IMHO Chunk Templating engine ist das beste. Die JAR-Datei hat nur 180 KB! und Unterstützung IF und Iteration. Wie cool ist das !

+1

Sehr cool in der Tat! –