Playframework 如何使typebinder仅对特定内容类型有效?

Playframework 如何使typebinder仅对特定内容类型有效?,playframework,Playframework,我正在编写一个json typebinder来将json转换为Foo类的Java对象。但我只希望在内容类型为application/json时使用它,这样我就可以接受多个内容类型,而不必定义单独的方法和使用@As注释。我基本上是在寻找一种定义@Global TypeBinder的方法,它只在内容类型为application/json时使用 @Global 公共类JsonObjectBinder实现了TypeBinder{ @凌驾 公共对象绑定(字符串名称、注释[]注释、字符串值、, 类actua

我正在编写一个json typebinder来将json转换为Foo类的Java对象。但我只希望在内容类型为application/json时使用它,这样我就可以接受多个内容类型,而不必定义单独的方法和使用@As注释。我基本上是在寻找一种定义@Global TypeBinder的方法,它只在内容类型为application/json时使用

@Global
公共类JsonObjectBinder实现了TypeBinder{
@凌驾
公共对象绑定(字符串名称、注释[]注释、字符串值、,
类actualClass,类型genericType)引发异常{
返回新的Gson().fromJson(值,Foo.class);
}
}

所有活页夹都存储在
地图中,并且在运行时根据要绑定的类型从地图中拾取活页夹。如果您为一个类型定义了多个活页夹,则只会使用一个活页夹—幸运的是,它是最后一个注册的活页夹

因此,您没有其他选项来控制活页夹的选择。 您可以在play.data.binding.Binder类中亲自查看它

如果希望使用不同的绑定器,可以使用不同的中间对象,例如带有适当绑定器的
JsonFoo
XmlFoo
。此外,您还可以将
JsonFoo
XmlFoo
定义为
Foo
的子类