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

Posted

技术标签:

【中文标题】如何从 Play 框架中的 YAML 固定装置加载(静态嵌套)枚举值?【英文标题】:How do I load a (static nested) enum value from YAML fixtures in the Play Framework? 【发布时间】:2011-05-23 17:21:04 【问题描述】:
public class Request extends Model 
    public static enum Category 
        First, Second, Third
    
        public Category category;

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

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

还有其他几种变体。没有什么真正有效。 SnakeYAML page 给了我一些诱人的提示,但我不知道如何正确引用我的应用程序包。什么是正确的语法?

【问题讨论】:

【参考方案1】:

你为什么不直接使用

...
category: Third

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

【讨论】:

【参考方案2】:

在 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文件中使用。

【讨论】:

【参考方案3】:

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

【讨论】:

我同意你所说的“请求”这个名字。这只是一个示例,而不是生产代码,但我应该注意这一点。无论如何,这似乎仍然不起作用。 嗯,我在google群里搜了一下,只找到了一个例子。使用了category: Third。如果绑定是按名称完成的,这是有道理的。不要忘记您的类别中的 JPA-Annotation @Enumerated(EnumType.STRING)

以上是关于如何从 Play 框架中的 YAML 固定装置加载(静态嵌套)枚举值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony 2 中从功能测试中加载固定装置

加载 Doctrine 固定装置时如何在控制台中禁用查询日志记录?

如何在 rails (4.1.5) 中创建固定装置(对于 Devise 用户)作为 yml.erb?

编程中的固定装置是啥?

如何将参数传递给 Play 中的 Jobs!框架 1.2.x?

Symfony 4 - 加载动态用户角色的固定装置