首页 > 其他分享 >编写项目时遇到的传参,表单接收问题

编写项目时遇到的传参,表单接收问题

时间:2023-10-14 10:22:10浏览次数:26  
标签:传参 OrdersId ResponseResult adoptOrder 表单 修改 new 编写

在项目测试中,遇到一个问题,先粘贴一下源码:

@PostMapping("/updateOrders")
public ResponseResult updateOrders(@RequestParam("OrdersId") Long OrdersId,@RequestParam("phone") String phone) {
if (OrdersId != null && StringUtils.isNotBlank(phone)) {
try {
adoptService.updateOrder(OrdersId,phone);
return new ResponseResult(200,"执行成功");
}catch (Exception e){
e.printStackTrace();
return new ResponseResult(410,"修改失败");
}
}
return new ResponseResult(420,"信息为空");
}
以上是修改过后的方案,修改之前的为:
@PostMapping("/updateOrders")
public ResponseResult updateOrders(@RequestBody Adopt adoptOrders) {
if (StringUtils.isNotBlank(adoptOrders.getPhone()) && !StringUtils.equals("null",adoptOrders.getPhone())) {
        try {
  Adopt
adoptOrder = new Adopt();
adoptOrder.setUserId(orders.getUid());

adoptOrder.setPhone(orders.getPhone());
adoptOrder.setAnimal(orders.getA_id());
adoptOrder.setReturnVisit(0);
adoptOrder.setType(0);
adoptOrder.setupdateDate(LocalDateTime.now());
(此处省略一条mybatisPlus的修改数据库方法(update函数))
            return new ResponseResult(200,"执行成功");
}catch (Exception e){
e.printStackTrace();
return new ResponseResult(410,"修改失败");
}
}
return new ResponseResult(420,"信息为空");
}

遇到的问题如下:
一开始测试时遇到的问题是不管我传入的表单是什么类型,传入了几个,都会返回执行成功,但是数据库根本没有被修改,但抛出异常并没有被执行,断点调式了修改
数据库的方法,方法执行也没有问题,能够正常传参,所以我把问题归于实体类字段和数据库字段不匹配,但折腾了好久发现并不是,不是字段问题,也不是方法问题,
那就是前端传参问题了,前端参数和后端参数也都是匹配的,唯独不一样的是前端传参少了实体类的几个参数,问题就在这里了,我的if判断语句只判断了表单中的phone
参数,前端表单传值时这个确实是填写了的,所以后端判断这个并不为空,所以执行了if内语句,但我当时并没有发现这个问题,既然if有问题那我就直接修改了if语句,
修改if语句为
if (OrdersId != null)后发现每次都执行信息为空,这下可以肯定自己发现的问题了,就是前端表单于后端表单参数不匹配导致的问题,所以我开始思考自己的接口
设计,发现了自己的设计逻辑问题,这个接口只需要修改phone字段,以及需要OrdersId字段,并不需要修改其他字段,所以我将后端请求体参数变成了请求参数,
并自行编写了修改数据库函数,全部完成后为以上贴出的代码,测试成功.

总结:
  后端的请求体参数是实体类时,前端表单传参时要传入实体类全部字段,不可缺少,否则无法识别.

标签:传参,OrdersId,ResponseResult,adoptOrder,表单,修改,new,编写
From: https://www.cnblogs.com/zjDm/p/17763757.html

相关文章

  • 表单进阶
    单选框redio<div><inputtype="radio"name="aaa"id="one"><!--如果不加name或者name不一样,那么可以多选--><labelfor="one">非常满意</label><!--给文字加上label可以点击文字进行单选框的......
  • 基于Win 自带的.NET FrameWork平台,使用文本文件编写C#代码,命令行编译以及引用第三方库
    转载自https://www.infoq.cn/article/2015/12/visual-studio-windows 不用VisualStudio也能开发.NETWindows应用邵思华2015-12-29本文字数:2915字阅读完需:约10分钟对于.NET应用的开发人员而言,以VisualStudio(简称VS)作为首选的开发工具应当是一种最......
  • 1.5 为x64dbg编写插件
    任何一个成熟的软件都会具有可扩展性,可扩展性是现代软件的一个重要特征,因为它使软件更易于维护和适应变化的需求,x64dbg也不例外其可通过开发插件的方式扩展其自身功能,x64dbg提供了多种插件接口,包括脚本插件、DLL插件、Python插件和.NET插件等。此外,x64dbg还支持用户自定义命令和快......
  • postman如何使用md5 、base64加密传参
    使用CryptoJS库什么是CryptoJS?CryptoJS是一个纯JavaScript实现的加密库,提供了很多常见的加密算法和加密模式,例如AES、DES、TripleDES、MD5、SHA-1、SHA-256等。它支持的加密方式很全面,使用简便,而且在前端中使用也非常方便postman在Pre-requestScript中先进行加密,然后设置全局......
  • 程序员简历编写指南(超详细)
    一定一定一定要重视简历啊!朋友们!正式投递简历之前,至少要花2~3天时间来专门完善自己的简历。并且,后续还要持续完善,即使你已经找到了工作。完善简历亦是对自己过往工作的总结,还是非常有必要的。简历就像是我们的一个门面一样,它直接决定了我们是否能够获得面试机会。简历上的内容......
  • 如何在低代码表单或列表页面中创建OA审批流程?
    随着企业管理的复杂化和信息化,流程管理成为了企业管理中不可或缺的一环。一个合理的流程能够规范企业的业务运作,提高工作效率,减少错误和漏洞。而流程的设计和管理则需要借助相应的工具和平台。今天主要介绍在企业管理中如何使用JVS低代码来创建和管理OA流程,以提高企业的运营效率和......
  • 【Dotnet 工具箱】推荐一个使用Flutter编写的博客园客户端
    推荐一个使用Flutter编写的博客园客户端简单易用并且同时支持Android/Ios平台。功能包含博客园首页、新闻列表、博问列表、闪存、我的博客、知识库等。截图预览博客园首页新闻列表博问列表闪存列表我的我的资料我的博客知识库博客内容粉丝关注在启动项......
  • element-ui 解决 table 里包含表单验证
    实际项目中的场景,需要在table里做表单的验证,如图效果: 其实问题关键就在于如何给el-form-item动态绑定prop      :prop="'tableData.'+scope.$index+'.字段名'"   ......
  • 关于vscode编写qt,qdebug无法输出到终端的问题
    这个问题主要是cmake那边的qt设置没弄好。其中WIN32_EXECUTABLEON。这个选项要设置为OFF。不然qdebug无法打印到终端中。如果本来就没有这set_target_properties的话,可以在cmake最后一行加上这个,并且将WIN32_EXECUTABLEON设置为OFF即可。set_target_properties(appl......
  • 11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查
    11.用Rust手把手编写一个wmproxy(代理,内网穿透等),实现健康检查项目++wmproxy++gite:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy健康检查的意义健康检查维持着系统的稳定运行,极大的加速着服务的响应时间,并保证服务器不会把消息包转......