Java 小白求助,前端传的值在后端为 null。是我代码哪里搞错了吗 代码有点烂。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gbj
V2EX    问与答

Java 小白求助,前端传的值在后端为 null。是我代码哪里搞错了吗 代码有点烂。

  •  
  •   gbj 2021-04-15 15:12:48 +08:00 1731 次点击
    这是一个创建于 1723 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.前端传的值的格式是这样的

    form: {score: [{},{},{}],mk: "XXX",mon: 1234567890} 

    2.controller 如下

    @PutMapping("/updateMk") public void updateByMk(@RequestBody MkScoreListVo form){ scoreService.updateByMk(form); } 

    3.MkScoreListVo 里是这样的

    @Data public class MkScoreListVo { private List<MkScoreVo> score; private String mk; private Long mon; } 

    4.MkScoreVo 里是这样的

    @Data public class MkScoreVo { private Integer INSTITUTION_NUMBER; private BigDecimal SCORE01; private BigDecimal score02; private BigDecimal score03; private BigDecimal score04; } 

    这里大小写混用是之前我测试是不是因为字段不一样导致了问题。

    5.java 在控制台直接打印接收到的 form,mk 和 mon 正常打印,score 里面却是 null

    如下所示 省略了几个 score 。

    MkScoreListVo(score=[MkScoreVo(INSTITUTION_NUMBER=null, SCORE01=null, score02=null, score03=null, score04=null), mk=XXX, mon=1615789558639) 
    WhiteDragon96
        1
    WhiteDragon96  
       2021-04-15 15:29:53 +08:00
    为啥要用 PUT
    timethinker
        2
    timethinker  
       2021-04-15 15:30:38 +08:00
    包装类型默认为 null,你这里 Integer 、BigDecimal 因为没有默认值,所以这个结果是符合预期的。
    gbj
        3
    gbj  
    OP
       2021-04-15 15:31:21 +08:00
    @WhiteDragon96 准备 update 的。不能用 put 吗
    gbj
        4
    gbj  
    OP
       2021-04-15 15:33:07 +08:00
    @qwe520liao 可前端这边 score 里是有值的,不知道为什么没传进去

    {"score":[{"SCORE01":1,"SCORE02":1.5,"INSTITUTION_NUMBER":123456}],"mon":1615792717581,"mk":"XXX"}
    WhiteDragon96
        5
    WhiteDragon96  
       2021-04-15 15:33:11 +08:00
    @gbj 你换成 POST 试试,前端也要改,这些听说有坑
    guorui112
        6
    guorui112  
       2021-04-15 15:35:11 +08:00
    put 会不会接收不到参数,不太了解,delete 就只能接收 url 中的参数
    gbj
        7
    gbj  
    OP
       2021-04-15 15:36:35 +08:00
    @WhiteDragon96 改了还是一样的结果
    gbj
        8
    gbj  
    OP
       2021-04-15 15:39:10 +08:00
    @guorui112 改成 post 了,但还是一样
    WhiteDragon96
        9
    WhiteDragon96  
       2021-04-15 15:39:36 +08:00
    @gbj 自己模拟条试下,是不是前端传的时候哪里错了
    comstrojs
        10
    comstrojs  
       2021-04-15 15:42:26 +08:00
    盲猜字段大写 Lombok@Data 生成的 getter setter 方法的原因
    timethinker
        11
    timethinker  
       2021-04-15 15:44:24 +08:00   1
    @gbj OK,有值的情况下又不一样了,这个涉及到属性命名策略( PropertyNamingStrategy )以及你使用的是什么 JSON 库,如果你使用的是 SpringBoot 默认没有配置的话,那么默认用的是 Jackson,命名策略好像是骆峰式。

    你让前端把字段名大小写改一下,或者使用 @JsonProperty 注解你的 VO 字段。
    hafuhafu
        12
    hafuhafu  
       2021-04-15 15:50:00 +08:00   1
    @gbj #4
    你这传的大小写都不一样,MkScoreVo 加 @JsonProperty("前端的 key")
    justicelove
        13
    justicelove  
       
    form data 和 request body 是不同的两个东西 是弄混了吗
    guorui112
        14
    guorui112  
       2021-04-15 15:52:53 +08:00
    Java 对请求 x-www-form-urlencoded 和 json 的解析处理不一样,其他语言都做了处理,就 java 没做
    gbj
        15
    gbj  
    OP
       2021-04-15 15:53:38 +08:00
    @qwe520liao 解决了,谢谢大佬,因为之前前端给我的都是没有对象数组的,没用到过 JsonProperty 注解。
    gbj
        16
    gbj  
    OP
       2021-04-15 15:56:13 +08:00
    @hafuhafu
    确实是这个问题,大小写是因为我之前 把实体类中的字段都改成了前端的字段,但是没用。于是就放那了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2459 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:22 PVG 17:22 LAX 01:22 JFK 04:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86