2009-07-10 9 views
9

alle. Ich brauche Java 5 Enum in Geschwindigkeit Vorlage, so dass ich etwas schreiben könnte wieVerwenden von Java 5 enums als Velocity-Variablen

Wie kann es getan werden? Danke im Voraus.

+0

Je nachdem, was Sie wenn .. sonst .. eigentlich tun. Auch, ob dies nur 1 Art oder viele verschiedene Operationen sind. http://stackoverflow.com/questions/859563/java-enums-and-switch-statements-the-default-case könnte hilfreich sein. – bryantsai

Antwort

3

Nicht schön, aber eine Abhilfe wäre, (manuell) die Enum-Konstanten, die Sie benötigen, in den Velocity-Kontext zu platzieren.

request.setAttribute('level_info', Level.INFO); 
request.setAttribute('level_error', Level.ERROR); 

Dann könnten Sie

#if ($var == $level_info) 

Vielleicht einfacher sagen: Nur die toString() Ihre Enum-Instanz

#if ("$var" == 'INFO') 
+0

Frage nur, ist das wirklich anders? – bryantsai

+0

@bryantsai: Die zweite Version wird auch wahr sein, wenn $ var ein anderes Objekt enthält, das als INFO ausgegeben wird, wie zB ein String. Unwahrscheinlich, dass dies ein Problem sein wird. – Thilo

+0

+1 für die zweite Version –

16

Eigentlich statt toString() Methode verwenden, wäre es besser, zu verwenden, name(), da es genau den Wert von enum zurückgibt und endgültig ist und daher in Zukunft nicht überschrieben werden kann. So in der Geschwindigkeit können Sie so etwas wie

 
#if($var.name() == "INFO") 
6

Ab Velocity 1.5, wenn die beiden Elemente im Vergleich verwenden werden mit == ist verschiedener Klassen, tut es automatisch eine toString() auf beide. Also versuchen Sie

#if($var == "INFO")