Java 如何从Play框架中的YAML装置加载(静态嵌套)枚举值?
我似乎无法使用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; } 以及其他一些变体。什么都不管用。这给了我一些诱人的提示,但我不知道如何正确引用我的应用程序包。什么是正确的语法?老实说,我不是一个有
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;
}