Java 如何从Play框架中的YAML装置加载(静态嵌套)枚举值?

Java 如何从Play框架中的YAML装置加载(静态嵌套)枚举值?,java,yaml,playframework,snakeyaml,Java,Yaml,Playframework,Snakeyaml,我似乎无法使用YAML测试装置/初始数据中的类别正确创建请求。我试过这样的方法: public class Request extends Model { public static enum Category { First, Second, Third } public Category category; } 以及其他一些变体。什么都不管用。这给了我一些诱人的提示,但我不知道如何正确引用我的应用程序包。什么是正确的语法?老实说,我不是一个有

我似乎无法使用YAML测试装置/初始数据中的类别正确创建请求。我试过这样的方法:

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

以及其他一些变体。什么都不管用。这给了我一些诱人的提示,但我不知道如何正确引用我的应用程序包。什么是正确的语法?

老实说,我不是一个有经验的用户,但我认为请求是一个坏名字,因为类存在于play框架中。因此,我建议将其重命名。但对于你的问题,这是没有必要的。使用完整的名称,意思是models.Request.Category.Third

为什么不使用

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

SnakeYAML应该识别类别的类型,并在对象构造期间将第三个字符串转换为类别枚举的第三个值。

在Play1.2.x中,您也可以使用以下形式:

固定装置:

...
category: Third
对于此型号:

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

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

就像您可以在routes和application.conf文件中使用Groovy模板一样,您也可以在yml文件中使用。

我同意您所说的“请求”名称。这只是一个示例,不是生产代码,但我应该注意这一点。无论如何,这似乎仍然不起作用。嗯,我在谷歌集团搜索了一下,只找到了一个例子。使用了
类别:第三个
。如果绑定是通过名称完成的,那么这是有意义的。不要忘记您的类别中的JPA注释
@Enumerated(EnumType.STRING)
@Entity
public class EnumTest extends Model {

    public enum Status {
        ACTIVE, DELETED
    }

    public Status status;

}