2016-05-13 1 views
0

Ich versuche, einen dynamisch generierten Text in Anführungszeichen in einer Velocity-Vorlage einzufügen. Der dynamisch generierte Text kann auch leer sein, sodass die Anführungszeichen nicht angezeigt werden müssen. Wenn der Text jedoch nicht leer ist, muss er in Anführungszeichen gesetzt werden.Angeben von Zitaten um dynamisch generierten Text in Velocity Templates in Java

Kann dies mit Velocity Templates erreicht werden, dass, wenn der Text leer ist, die Anführungszeichen um ihn herum verschwinden?

Mein Code ist wie folgt:

#if ($messageFromSender == "") <i></i> 
#else <i>&quot;$!{messageFromSender}&quot;</i> 

dies die Ausnahme ist, die ich bekomme:

org.apache.velocity.exception.ParseErrorException: Encountered "<EOF>" 

Vielen Dank im Voraus.

+0

funktioniert der von Ihnen bereitgestellte Code überhaupt? Gibt es einen Fehler? – Turtle

+0

nach dem Entfernen der if sonst an dieser Stelle hinzugefügt, funktioniert die Vorlage gut. –

Antwort

0

Ja, Sie können es tun. versuchen Sie dies -

Nehmen wir an, Sie haben eine Liste itemList, die Text in Anführungszeichen hat.

Fügen Sie nun diese Objektliste zum Geschwindigkeitskontext hinzu, fügen Sie auch das Objekt StringUtils zum Kontext hinzu.

context.put("itemList", itemList); 

context.put("stringUtils", new org.apache.commons.lang.StringUtils()); 

Jetzt, in der Geschwindigkeit Vorlage können Sie die Texte ist as-

#foreach($item in $itemList) 
    #if($stringUtils.length($item) > 2) 
     $item //print item if text is not empty 
    #else 
     //print nothing if text is empty. 
    #end 
#end 

length() Methode der StringUtils Klasse verwendet Anzeige der Größe des Elements zu überprüfen.

Wenn der Text nicht leer ist, ist die Größe größer als 2. (Größe der Anführungszeichen + Textgröße).

Wenn der Text leer ist, ist seine Größe genau 2 (Größe der Anführungszeichen).

Ausgabe

"item1" // print Artikel, falls der Text nicht leer ist.

// Nichts drucken, wenn der Text leer ist.

"item2" // Element drucken, wenn der Text nicht leer ist.

Ich hoffe, es hat geholfen! Lassen Sie mich für eine Klarstellung wissen.

+0

Dank Bro. Es hat wirklich geholfen. Ich habe das Ende nicht bei der letzten der anderen hinzugefügt. –

0

Sie könnten eine if-Anweisung verwenden, um den Textwert zu überprüfen und entsprechend zu reagieren.

#if ($foo == "") 
<h1>" "</h1> 
#elseif ($foo != "") 
<h1>"$foo"</h1> 
+0

Hallo danke für die Antwort. Ich hatte ein Problem mit der Analyse der Vorlage nach dem Put wenn sonst. Dies ist, was ich gesetzt haben: –

+0

# if ($ messageFromSender == "") #else " $ {} messageFromSender "

+0

Bitte geben Sie die Frage aktualisieren, anstatt zu kommentieren!.Auf diese Weise können andere Benutzer Ihnen leichter helfen – Turtle

Verwandte Themen