首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   fuxinya · 120 天前 · 803 次点击
    这是一个创建于 120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有三个 Goods 表单类

    • GoodsForm1
    • GoodsForm2
    • GoodsForm3

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

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

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

    6 回复  |  直到 2019-02-19 14:34:07 +08:00
        1
    leon0903   120 天前
    没试过 但是感觉使用父类去绑定不同的子类是行不通的。
        2
    fuxinya   120 天前
    @leon0903 暂时的方案:不让 Spring 自动绑定了,手动用 JSON 工具去解析 body,根据 type 解析成不同的 GoodsForm。暂时先这样吧
        4
    fuxinya   120 天前
        5
    fuxinya   120 天前
    感谢 @smeraldo 的方案,已解决。不过项目里用的是阿里的 fastjson,可以使用 @JSONType 注解,支持 seeAlso 配置
    具体请参照文档 [JSONType_seeAlso_cn]( https://github.com/alibaba/fastjson/wiki/JSONType_seeAlso_cn)
        6
    leon0903   120 天前
    我也长见识了 谢谢各位
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   996 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 19:08 · PVG 03:08 · LAX 12:08 · JFK 15:08
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1