首页 > 解决方案 > 如何在 REST 请求正文中将缺失值设为空白

问题描述

我的 REST 控制器:

@RestController
@RequestMapping("/api/people")
public class PersonController {

    @Autowired
    private PersonRepository people;

    @Transactional
    @RequestMapping(path = "/{personId}", method = RequestMethod.PUT)
    public ResponseEntity<?> update(
            @PathVariable String personId,
            @RequestBody PersonDTO dto) {

        // get the entity by ID
        Person p = people.findOne(personId); // we assume it exists

        // update ONLY entity attributes that have been defined
        if(/* dto.getFirstName is defined */)
            p.setFirstName = dto.getFirstName;

        if(/* dto.getLastName is defined */)
            p.setLastName = dto.getLastName;

        System.out.println(dto);
        return ResponseEntity.ok(p);
    }
}

我的人 DTO:

 private class PersonDTO {
        private String firstName;
        private String lastName;
        private List<String> designations;
        private String location;    
        /* getters and setters ... */
    }

我没有在我通过邮递员发出的 REST 请求中传递值指定,我在本地调试或打印时看到 DTO 中的值,它说指定是“空”但我希望它被视为空白数组列表. 我该怎么做?

标签: javaspringapirestannotations

解决方案


没有什么能阻止你PersonDto这样定义你的:

private List<String> designations = new ArrayList<>();

这意味着即使客户端发送 null 您也将反序列化为一个空列表。


推荐阅读