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

Je semble incapable de créer correctement une demande avec une catégorie dans mes appareils de test/données initiales YAML. J'ai essayé des choses comme:Comment charger une valeur enum (statique imbriquée) à partir d'appareils YAML dans le cadre de lecture?

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

Et plusieurs autres variations. Rien ne fonctionne vraiment. Le SnakeYAML page me donne quelques conseils alléchants mais je ne vois pas comment référencer correctement les paquets de mon application. Quelle est la bonne syntaxe pour cela?

Répondre

0

Pour être honnête, je ne suis pas un utilisateur expérimenté, mais je pense que Request est un mauvais nom, car la classe existe dans le cadre de jeu. Donc, je recommanderais de le renommer. Mais pour votre problème, ce n'est pas nécessaire. Utilisez le nom complet, ce qui signifie models.Request.Category.Third.

+1

Je suis d'accord avec ce que vous avez dit pour le nom "Request". C'était juste un exemple et pas un code de production, mais j'aurais dû faire attention à ça. En tout cas, cela ne semble toujours pas fonctionner. –

+0

Hmm, j'ai cherché sur le groupe google et trouvé un seul exemple. Il a été utilisé 'category: Third'. Ce qui est logique si la liaison a été faite par le nom. N'oubliez pas l'annotation JPA '@Enumerated (EnumType.STRING)' dans votre catégorie. – niels

5

Pourquoi ne pas simplement utiliser

... 
category: Third 

SnakeYAML devrait reconnaître le type de catégorie et de convertir la chaîne Troisième Troisième valeur de la catégorie ENUM pendant la construction de l'objet.

1

En Play1.2.x vous pouvez également utiliser ce formulaire:

Équipement:

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

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

Pour ce modèle:

@Entity 
public class EnumTest extends Model { 

    public enum Status { 
     ACTIVE, DELETED 
    } 

    public Status status; 

} 

Comme vous pouvez utiliser des modèles Groovy dans les routes et le fichier application.conf, vous pouvez également utiliser dans les fichiers yml.