[Spring Boot] 表单如何绑定不同 POJO 对象

2019-02-19 10:06:47 +08:00
 fuxinya

现在有三个 Goods 表单类

均继承自GoodsFormGoodsForm里面存放的公用字段,各自则存放的独有字段。通过一个接口传入表单,能否自动识别绑定参数至Goods1Goods2Goods3

public Object addGoods(@Validated GoodsForm goodsForm, BindingResult result) {
    if(goodsForm instanceof GoodsForm1) {
        // DO STH...
    }
}

还是说只能造三个接口。但是以后如果继续扩展怎么办,继续往下加感觉不优雅

1770 次点击
所在节点    程序员
6 条回复
leon0903
2019-02-19 10:46:23 +08:00
没试过 但是感觉使用父类去绑定不同的子类是行不通的。
fuxinya
2019-02-19 11:01:01 +08:00
@leon0903 暂时的方案:不让 Spring 自动绑定了,手动用 JSON 工具去解析 body,根据 type 解析成不同的 GoodsForm。暂时先这样吧
smeraldo
2019-02-19 11:20:42 +08:00
fuxinya
2019-02-19 14:12:22 +08:00
fuxinya
2019-02-19 14:22:24 +08:00
感谢 @smeraldo 的方案,已解决。不过项目里用的是阿里的 fastjson,可以使用 @JSONType 注解,支持 seeAlso 配置
具体请参照文档 [JSONType_seeAlso_cn]( https://github.com/alibaba/fastjson/wiki/JSONType_seeAlso_cn)
leon0903
2019-02-19 14:34:07 +08:00
我也长见识了 谢谢各位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/536398

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX