【问题标题】:How do I load a (static nested) enum value from YAML fixtures in the Play Framework?如何从 Play 框架中的 YAML 固定装置加载(静态嵌套)枚举值?
【发布时间】: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 给了我一些诱人的提示,但我不知道如何正确引用我的应用程序包。什么是正确的语法?

【问题讨论】:

    标签: java yaml playframework snakeyaml


    【解决方案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)
        猜你喜欢
        • 2018-11-20
        • 2012-07-05
        • 2023-04-04
        • 2017-12-26
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        相关资源
        最近更新 更多