编辑:Play Framework开发人员的答案是:
使用基于Spring数据绑定的Java表单API进行多态绑定是不可能的。据我所知,Spring databind不支持它。
支持多态性的解决方法是使用ajax和JSON(Jackson将负责serlialization):
在控制器中:获取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中序列化/解组多态实体吗?