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

时间:2010-12-10 20:40:26

标签: java yaml playframework snakeyaml

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

我似乎无法在我的YAML测试装置/初始数据中正确创建具有类别的请求。我尝试过这样的事情:

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

还有其他一些变化。什么都没有用。 SnakeYAML page给了我一些诱人的提示,但我没有看到如何正确引用我的应用程序包。这个的正确语法是什么?

3 个答案:

答案 0 :(得分:5)

为什么不使用

...
category: Third

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

答案 1 :(得分:1)

在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;

}

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

答案 2 :(得分:0)

说实话,我不是一个有经验的用户,但我认为Request是个坏名字,因为该类存在于play-framework中。所以我建议重命名它。但是对于你的问题,没有必要。使用完整名称,即models.Request.Category.Third