当前位置: 首页 > 知识库问答 >
问题:

@RequestBody如何区分未发送值和空值?

阎功
2023-03-14
@PatchMapping("/update")
HttpEntity<String> updateOnlyIfFieldIsPresent(@RequestBody Person person) {
    if(person.name!=null) //here
}

如何区分未发送的值和空值?如何检测客户端是否发送了空字段或跳过字段?

共有1个答案

堵彬彬
2023-03-14

上述解决方案需要对方法签名进行一些更改,以克服请求主体到POJO(即Person对象)的自动转换。

方法 1:-

无需将请求正文转换为 POJO 类(Person),您可以将对象作为 Map 接收并检查键“名称”是否存在。

@PatchMapping("/update")
public String updateOnlyIfFieldIsPresent1(@RequestBody Map<String, Object> requestBody) {

    if (requestBody.get("name") != null) {
        return "Success" + requestBody.get("name"); 
    } else {
        return "Success" + "name attribute not present in request body";    
    }


}

方法二:-

将请求正文作为String接收,并检查字符序列(即名称)。

@PatchMapping("/update")
public String updateOnlyIfFieldIsPresent(@RequestBody String requestString) throws JsonParseException, JsonMappingException, IOException {

    if (requestString.contains("\"name\"")) {
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(requestString, Person.class);
        return "Success -" + person.getName();
    } else {
        return "Success - " + "name attribute not present in request body"; 
    }

}
 类似资料:
  • 我想使用curl在控制器中一起传递json和文件。我在控制器中有以下方法。 下面是curl命令 使用JSON的Spring MVC多部分请求 这就是客户机如何将数据Paasting到服务器

  • 我正在Spring-Boot中实现微服务。我尝试将@RequestBody与一个MultipartFile一起发送。我在stackoverflow中引用了一些问题,但没有任何帮助。 视频类 方法 我只是试着用@requestpart,并附上我如何请求的屏幕截图 错误为

  • 以下是我如何发送: 或者像这样(两者都试过): 在接收端,如果我访问$\u POST,则它是空的。如果我访问文件\u获取\u内容('php://input“),然后它包含我的json。 这是怎么回事?

  • 我创建了一个简单的REST服务(POST)。但是当我从postman@RequestBody调用这个服务时,它没有收到任何值。 我的java Bean对象如下: System.out.println将null打印为PolcyNumber的值。 请帮我解决这个问题。 我在请求体中传递的JSON是 我甚至在postman中设置了到

  • 我们正在尝试建立springfox:swagger用户界面。但是,当使用值使用post方法创建restcontroller时。对于不可变接口,示例显示的是,模型显示的是接口名称,而不是其他名称。 我注意到,当我使用不可变类作为请求体时,示例显示了它的所有属性。我尝试在接口上添加子类型和父配置,但没有改变任何东西 这是我们不变的界面: 我们的映射: 我们的objectmapper: 我们的招摇过市配

  • 本文向大家介绍区分MySQL中的空值(null)和空字符(''),包括了区分MySQL中的空值(null)和空字符('')的使用技巧和注意事项,需要的朋友参考一下 日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占