在react里,有个编辑页面需要保存多个列的数据,但是在保存的时候,发现某个列不能进行保存。而且会跳转到登录页面,需要重新登录。

解决思路:首先,需要f12查看发起的请求是什么,(发现是一个options 和一个put,put是400),进入前端页面的代码进行查看,(把重新登录的代码先注释了。)

然后检查后端的代码,查看路由,然后在vim里:vs,使用ctrl t **加文件名,查看是使用的是哪一段代码,进行检查。

json: cannot unmarshal string into Go struct field UpdateCalculationTemplateRequest.InitialFillingAmount of type float64

注意:(在使用struct的时候,需要吧json右边的格式写完整,双引号不能少,空格不要多)

+  InitialFillingAmount float64 `json:"initialFillingAmount"`
+  OperatingDischargeRate float64 `json:"operatingDischargeRate"`
+  MaintenanceDischargeRate float64 `json:"maintenanceDischargeRate"`
+  MaintenanceFillingRate float64 `json:"maintenanceFillingRate"`
+  AnnualMaintenanceRate float64 `json:"annualMaintenanceRate"`
+  ScrapDischargeRate float64 `json:"scrapDischargeRate"

然后再在Error里自己自己的error的打印:

var req UpdateCalculationTemplateRequest
   if err := c.ShouldBindJSON(&req); err != nil {
     c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+    fmt.Println("   == got error", err.Error())
     return
   }

格式修改完整后,继续在前端发起请求,发现出现了error,说明还是格式不对,仔细对比发现input不匹配,应该使用inputnumber

-          <Input className="custom-form-item" defaultValue={data.data.initial_filling_amount}/>
+          <InputNumber defaultValue={data.data.initial_filling_amount} step={0.01} min={0} max={100} precision={2} className="custom-input" />

修改好后,就可以正常保存了。