Spring Boot-源不得为空

时间:2019-11-25 00:33:49

标签: java spring-boot

我用一个端点创建了一个简单的Spring Boot应用程序,该端点在users表中创建了一条新记录。

但是,当我用Postman到达此端点时,出现以下错误:

java.lang.IllegalArgumentException: Source must not be null
    at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:693) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:639) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at com.demo.controller.UserController.createUser(UserController.java:45) ~[classes/:na]

出了什么问题?

编辑:

显然,它确实将记录保存在DB中,但是仍然返回错误。 这是UserController的代码:

    @PostMapping
    public UserRest createUser(@RequestBody UserDetailsRequestModel userDetails) 
    {

        UserRest result = new UserRest();
        UserDto userDto = new UserDto();

        BeanUtils.copyProperties(userDetails, userDto);

        UserDto createdUser = userService.createUser(userDto);

        BeanUtils.copyProperties(createdUser, result);
        return result;
    }

2 个答案:

答案 0 :(得分:1)

Java spring已断言该参数不能为null。 因此,正如您提到的,您正在调用方法

BeanUtils.copyProperties(createdUser, result)    at com.demo.controller.UserController.createUser(UserController.java:45) ~[classes/:na]

您只需要确保值不为空

如果您查看复制方法的来源,则会发现检查是否为空。

Assert.notNull(source, "Source must not be null");
Assert.notNull(target, "Target must not be null");

答案 1 :(得分:0)

很可能您是在代码中从createUser方法返回null的,

喜欢

@PostMapping
public UserRest createUser(@RequestBody UserDetailsRequestModel userDetails) 
{

    UserRest result = new UserRest();
    UserDto userDto = new UserDto();

    BeanUtils.copyProperties(userDetails, userDto);

    UserDto createdUser = userService.createUser(userDto);

    BeanUtils.copyProperties(createdUser, result);

    return null;   // This line
}

请检查结果是否正确