我用一个端点创建了一个简单的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;
}
答案 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
}
请检查结果是否正确