首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在控制器中传递非空值@RequestParameter?

如何在控制器中传递非空值@RequestParameter?
EN

Stack Overflow用户
提问于 2021-08-25 04:37:40
回答 3查看 52关注 0票数 1

我正在尝试通过在控制器方法中使用spring boot 2.5.3来更新实体。

代码语言:javascript
运行
AI代码解释
复制
http://localhost:5000/api/v1/student/1

使用以下有效负载。

代码语言:javascript
运行
AI代码解释
复制
{
    "name":"abc",
    "email":"abc@email.com",
    "dob":"2000-06-14"
}

这些值不会更新。当我使用调试器检查它们时,它们会得到空值。这是我的控制器方法。

代码语言:javascript
运行
AI代码解释
复制
@PutMapping(path = "/{id}")
public ResponseEntity<?> updateStudent(@PathVariable("id") Long id, @RequestParam(required = false) String name, @RequestParam(required = false) String email) {
    Student savedStudent = studentService.updateStudent(id, name, email);
    return ResponseEntity.ok(savedStudent);
}

电子邮件和姓名是可选的。

调试器中:name:null,email:null。为什么它们会得到空值?从控制器传递值的正确方式是什么?

代码语言:javascript
运行
AI代码解释
复制
@Transactional
// We are not using any query from the repository because we have the service method with transactional annotation.
public Student updateStudent(Long studentId, String name, String email) {
    Student student = studentRepository.findById(studentId).orElseThrow(()->new EntityNotFoundException("Student with id " + studentId + " does not exists."));
    if (name!= null && name.length()>0 && !Objects.equals(name,student.getName())){
        student.setName(name);
    }
    
    if (email!= null && email.length()>0 && !Objects.equals(email,student.getEmail())){
        Optional<Student> optionalStudent = studentRepository.findStudentByEmail(email);
        if (optionalStudent.isPresent()){
            throw new IllegalStateException("Email is already taken");
        }
        student.setEmail(email);
    }
    System.out.println(student);
    Student savedStudent= studentRepository.save(student);
    return savedStudent;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-25 04:43:11

代码语言:javascript
运行
AI代码解释
复制
{
    "name":"abc",
    "email":"abc@email.com",
    "dob":"2000-06-14"
}

这不是请求参数,而是请求正文。您需要创建一个类并使用@RequestBody注释。

代码语言:javascript
运行
AI代码解释
复制
@Data
public class UpdateStudentRequest {
    private String id;
    private String name;
    private String email;
}
代码语言:javascript
运行
AI代码解释
复制
@PutMapping(path = "/{id}")
public ResponseEntity<?> updateStudent(@PathVariable("id") Long id, @RequestBody UpdateStudentRequest request) {
    Student savedStudent = studentService.updateStudent(
            request.getId(), request.getName(), request.getEmail());
    return ResponseEntity.ok(savedStudent);
}

如果您想将请求参数发送为...URL参数:

代码语言:javascript
运行
AI代码解释
复制
http://localhost:5000/api/v1/student/1?name=abc&email=abc@email.com
票数 1
EN

Stack Overflow用户

发布于 2021-08-25 04:43:54

您没有将其作为参数发送(在?之后)。http://localhost:5000/api/v1/student/1?name=John可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2021-08-25 04:51:27

由于您使用内容主体(在本例中为JSON )对HTTP请求进行POST,因此需要使用@RequestBody注释来映射主体:

代码语言:javascript
运行
AI代码解释
复制
@PutMapping(path = "/{id}")
public ResponseEntity<?> updateStudent(@PathVariable("id") Long id, @RequestBody StudentDTO student) {
    Student savedStudent = studentService.updateStudent(
            id, student.getName(), student.getEmail());
    return ResponseEntity.ok(savedStudent);
}

StudentDTO将是一个反映输入有效负载的轻量级类型:

代码语言:javascript
运行
AI代码解释
复制
public class StudentDTO {
    private String name;
    private String email;
    private String dob;
    // setters and getters
}

否则,为了保留您的RestController签名并使用@RequestParam规格化字段,您应该发送以下形式的请求:

代码语言:javascript
运行
AI代码解释
复制
http://localhost:5000/api/v1/student/1?name=abc&email=abc@email.com&dob=2000-06-14
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68923101

复制
相关文章
jQuery遮罩(Mask)及弹窗时禁止页面滚动实现
保险起见可以把 html 和 body 的高度都设置 100% ,如下,用添加 class 的方法实现:
德顺
2019/11/13
6.6K0
jquery 页面滚动事件 scroll()
在没有任何元素的情况下,document的宽高是与window的宽高一致的,那么如果给document加入一些元素呢?
Devops海洋的渔夫
2019/06/02
10.3K0
WPF 拖动滚动
使用 ListBox 可以简单做到,那么如何使用 ScrollViewer 做到相同效果?
林德熙
2022/08/04
1.4K0
WPF 拖动滚动
使用 ListBox 可以简单做到,那么如何使用 ScrollViewer 做到相同效果?
林德熙
2018/09/19
1.5K0
WPF 拖动滚动
jQuery滚动到页面指定位置
        在前端的页面开发中,经常会碰到页面跳转问题,这个跳转指的是页面内部跳转到指定位置,通常是在有滚动条的情况下,网上介绍的方法很多,本文主要是介绍jQuery函数中的一个小trick,.focus()函数。
Tyan
2022/05/09
7.2K0
jQuery滚动到页面指定位置
canvas实现拖动页面时显示窗口视频
简介   当前主流的视频网站目前有不少新鲜好玩的功能,最明显的莫过于小视频的显示--当视频不在当前视口范围 时,会在右下角用一个小窗口来显示当前的视频,而且可以拖拽。   今晚心血来潮,起了动手试试的念头。我的想法很简单,用canvas来获取视频每一帧的数据,并用动画函数 requestAnimationFrame函数(这里没有考虑兼容性)来显示每一帧的视频数据。另外,对canvas绑定拖动的 功能,这样就基本实现了简易的窗口视频。   本章内容的重点就是requestAnimationFrame函数和ca
欲休
2018/03/15
1.6K0
canvas实现拖动页面时显示窗口视频
分享一款jQuery全屏滚动页面特性案例
分享一款jQuery全屏滚动页面特性案例。 我们在来往官网,或者小米官网都会看到全屏滚动页面的一些例子。可以说全屏滚动页面越来越受欢迎。它们就像是竖着的图片轮转一样。 这样的页面有很多,如:iPhone 5C页面:http://www.dowebok.com/demo/2014/77/index8.html  网易邮箱6.0:http://www.dowebok.com/demo/2014/97/ 来往官网:http://www.laiwang.com 百度百科史记2013:http://www.dowebok.com/demo/2014/78/ 搜狐快站:http://www.dowebok.com/demo/2014/80/ 证券时报网移动产品:http://www.dowebok.com/demo/2014/77/index9.html 邮箱大师:http://www.dowebok.com/demo/126/ 360安全路由:http://www.dowebok.com/demo/2014/77/index10.html 等等一些例子。看看实际代码:
业余草
2019/01/21
4.1K0
页面滚动,元素跳动;附带jquery.scrollex.js插件
有些动画是页面一加载就要的,还有一些动画是需要页面滚动到那个元素才要展示的。
用户7293182
2022/01/20
5.8K0
页面滚动,元素跳动;附带jquery.scrollex.js插件
滚动页面
除了接受正负偏移量,window.scrollBy还能接受ScrollToOptions作为配置。
公众号@魔术师卡颂
2020/08/26
2.7K0
html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
2,页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
全栈程序员站长
2022/08/05
5K0
html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
setInerval实现图片滚动离开页面后又返回页面时图片加速滚动问题解决
由于在加载了图片滚动的页面之后,又去到了其他页面,但是定时器没有停止,而页面又没有显示在用户面前,当返回页面的时候,就会把之前定时器中已经移动的图片动画一股脑移动,就会出现如题所述加速滚动的效果。
蓓蕾心晴
2020/03/19
1.2K0
使用 fartscroll.js 让你的网页在滚动时放屁
放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者在愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页在滚动的过程中 放屁。
Denis
2023/04/15
9880
视频流媒体平台EasyNVR使用iframe集成到页面时如何去除页面的滚动条?
使用过我们的流媒体服务器的都知道,我们的服务器支持集成到自己的项目平台上,因此不少使用我们流媒体服务器的用户,都实现了将直播视频流集成到自己的平台。
EasyNVR
2020/06/08
1.3K0
视频流媒体平台EasyNVR使用iframe集成到页面时如何去除页面的滚动条?
页面滚动事件
HTML DOM事件大全:https://www.runoob.com/jsref/dom-obj-event.html
阿超
2022/08/17
2K0
jquery 列表可拖动排序 sortable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery UI Sortable</title> <style type="text/css"> #myList{ width: 80px; background: #EEE; padding: 5px; list-style: none; } #myList a{ text-decoration: none; color: #0077B0; } #myList a:hover{ text-decoration: underline; } #myList .qlink{ font-size: 12px; color: #666; margin-left: 10px; } </style> </head> <body> <ul id="myList"> <li><a href="#">心情</a></li> <li> <a href="#">相册</a> <a href="#" class="qlink">上传</a> </li> <li> <a href="#">日志</a> <a href="#" class="qlink">发表</a> </li> <li><a href="#">投票</a></li> <li><a href="#">分享</a></li> <li><a href="#">群组</a></li> </ul>
用户5760343
2019/10/10
2.5K0
jquery 列表可拖动排序 sortable
duilib 滚动条不能拖动 问题处理
遇到过很多次群里朋友问:为什么滚动条不能拖动,点击两端的按钮可以滚动,通过鼠标滚轮也可以滚动,就是鼠标拖动时拖不动? 这是个提问次数较高的问题。 下面的内容只针对可能的原因中的一个,也是最可能的原因。 因为通过鼠标拖动滚动条,实际内部用到了定时器,具体有兴趣的可以查看duilib的源码。我们的程序在处理时常常也会用到WM_TIMER消息,通过拦截WM_TIMER消息来做一些定时器处理,不能拖动的原因很有可能就是我们拦截了定时器消息之后,不管触发这个消息的定时器ID是多少,我们统统都不再继续传递给duilib
大菊观
2018/05/24
1.5K0
vue页面采用原生方式拖动
主要的难点是怎么获取要拖动的元素,e.target是获取的目标元素,可以采用while循环
tianyawhl
2021/10/09
6120
liMarquee – jQuery无缝滚动插件
liMarquee 是一款基于 jQuery 的无缝滚动插件,类似于 HTML 的 marquee 标签,但比 marquee 更强大。它可以应用于任何 Web 元素,包括文字、图像、表格、表单等元素,同时它可以设置不同的滚动方向(左右上下)、滚动速度、鼠标悬停暂停、鼠标拖动、加载 xml 文件等等。
kirin
2021/01/29
9.1K0
监听页面滚动结束
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.0/jquery.min.js"></script> </head> <body> <div style="height: 1000px;width: 10
用户10106350
2022/10/28
3.3K0
jquery横向滚动条
此代码献给wendy 由于工作太忙,下次再整理成插件调用,先记录下来,欢迎同学们提意见。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" conten
deepcc
2018/05/16
7.3K0

相似问题

Javascript (jQuery)在拖动项目时禁用页面滚动

20

如何在jquery中拖动draggable时禁用页面滚动?

31

在滚动可拖动项的内容时禁用jQuery拖动

30

在jquery中拖动+滚动

11

JQUERY UI可排序,开始拖动时页面从底部滚动

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档