多态性Play Framework 2 bindFromRequest

时间:2013-12-17 18:48:13

标签: java playframework-2.0

编辑:Play Framework开发人员的答案是:

  

使用基于Spring数据绑定的Java表单API进行多态绑定是不可能的。据我所知,Spring databind不支持它。

支持多态性的解决方法是使用ajax和JSON(Jackson将负责serlialization):

  • 在视图中:ajax数据将是表单的JSON表示形式。
  • 在控制器中:获取JSON:

    Animals animals=Json.fromJson(ctx.request().body().asJson(), Animals.class); 
    

结束编辑

我有以下模特:

enum Type{ PARROT, ZEBRA} 

@JsonTypeInfo( use = JsonTypeInfo.Id.NAME,  include = JsonTypeInfo.As.PROPERTY,  
property = "animalType", visible = true)  
@JsonSubTypes({  
@Type(value = Mammal.class, name = "ZEBRA"),  
@Type(value = Bird.class, name = "PARROT"),
class Animal{
    public Integer color;
    public Type animalType;
}
class Bird extends Animal{
    public Integer airSpeed;
    public Integer wingType;
}
class Mammal extends Animal{
    public Integer legs;
}
class Animals{
    List<Animal> animals;
    Integer num;
}

我在控制器中发布模型动物。现在我想获取动物实例,如下所示:

Animals animalsTest= Form.form(Animals.class).bindFromRequest().get();

如果我在 animalsTest.animals 中获取内容,它将只包含一个动物对象列表。没有关于他们的亚型。有一种方法可以在Play Framework 2中序列化/解组多态实体吗​​?

0 个答案:

没有答案