2010-12-10 4 views
3
public class Request extends Model { 
    public static enum Category { 
     First, Second, Third 
    } 
     public Category category; 
} 

Ich scheinen nicht in der Lage, eine Anfrage mit einer Kategorie in meinem YAML Test Fixtures/Ausgangsdaten zu erstellen. Ich habe versucht, Dinge wie:Wie lade ich einen (statisch verschachtelten) Enum-Wert von YAML-Fixtures im Play Framework?

Request(areq): 
    category: Request.Category.Third 

Und mehrere andere Variationen. Nichts funktioniert wirklich. Die SnakeYAML page gibt mir einige verlockende Hinweise, aber ich sehe nicht, wie ich die Pakete meiner App richtig referenzieren kann. Was ist die richtige Syntax dafür?

Antwort

0

Um ehrlich zu sein bin ich kein erfahrener Benutzer, aber ich denke, Request ist ein schlechter Name, weil die Klasse im Play-Framework existiert. Also würde ich empfehlen, es umzubenennen. Aber für Ihr Problem ist es nicht notwendig. Verwenden Sie den vollständigen Namen, also models.Request.Category.Third.

+1

Ich stimme dem überein, was Sie für den Namen "Request" gesagt haben. Dies war nur ein Beispiel und kein Produktionscode, aber ich hätte darauf achten müssen. Auf jeden Fall scheint das immer noch nicht zu funktionieren. –

+0

Hmm, ich habe die Google-Gruppe durchsucht und nur ein Beispiel gefunden. Es wurde "Kategorie: Third" verwendet. Was macht Sinn, wenn die Bindung mit dem Namen gemacht wurde. Vergiss nicht die JPA-Annotation '@Enumerated (EnumType.STRING)' in deiner Kategorie. – niels

5

Warum Sie nicht verwenden nur

... 
category: Third 

SnakeYAML sollte Art von Kategorie und konvertieren Third String Dritter Wert der Kategorie ENUM bei der Objektkonstruktion erkennen.

1

In Play1.2.x Sie auch dieses Formular verwenden können:

Leuchten:

EnumTest(enumtest01): 
    status: ${models.EnumTest.Status.ACTIVE} 

EnumTest(enumtest02): 
    status: ${models.EnumTest.Status.DELETED} 

Für dieses Modell:

@Entity 
public class EnumTest extends Model { 

    public enum Status { 
     ACTIVE, DELETED 
    } 

    public Status status; 

} 

Wie Sie Groovy-Vorlagen in den Routen verwenden können und die Datei application.conf können Sie auch in den XML-Dateien verwenden.