Как загрузить (статическое вложенное) значение перечисления из фикстур YAML в Play Framework?

public class Request extends Model {
    public static enum Category {
        First, Second, Third
    }
        public Category category;
}

Кажется, я не могу правильно создать запрос с категорией в моих тестовых приборах/исходных данных YAML. Я пробовал такие вещи, как:

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

И несколько других вариаций. На самом деле ничего не работает. страница SnakeYAML дает мне несколько дразнящих подсказок, но я не понимаю, как чтобы правильно ссылаться на пакеты моего приложения. Каков правильный синтаксис для этого?


person Matthew Leon    schedule 10.12.2010    source источник


Ответы (3)


Почему бы вам не использовать просто

...
category: Third

SnakeYAML должен распознавать тип категории и преобразовывать третью строку в третье значение перечисления категории во время построения объекта.

person maslovalex    schedule 15.12.2010

В Play1.2.x вы также можете использовать эту форму:

Светильники:

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

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

Для этой модели:

@Entity
public class EnumTest extends Model {

    public enum Status {
        ACTIVE, DELETED
    }

    public Status status;

}

Подобно тому, как вы можете использовать шаблоны Groovy в маршрутах и ​​файле application.conf, вы также можете использовать их в файлах yml.

person Kristóf Dombi    schedule 01.08.2012

Честно говоря, я неопытный пользователь, но я думаю, что Request — это плохое имя, потому что класс существует в play-framework. Так что рекомендую переименовать. Но для вашей задачи это не нужно. Используйте полное имя, означающее models.Request.Category.Third.

person niels    schedule 11.12.2010
comment
Я согласен с тем, что вы сказали о запросе имени. Это был просто пример, а не производственный код, но я должен был остерегаться этого. В любом случае, это все еще не работает. - person Matthew Leon; 12.12.2010
comment
Хм, я искал в группе Google и нашел только один пример. Был использован category: Third. Что имеет смысл, если привязка была сделана по имени. Не забудьте JPA-аннотацию @Enumerated(EnumType.STRING) в своей категории. - person niels; 12.12.2010