USER.GET()给出了错误和idk信息,说明了为什么会发生以及如何进行谷歌搜索。有谁知道该如何解决此错误?
感谢您的关注!!
@GetMapping("/users/{id}")
public EntityModel<User> retrieveUser(@PathVariable int id) {
User user = service.findOne(id);
if(user == null) {
throw new UserNotFoundException("id-" + id);
}
//FOLLOWING LINE GIVES ERROR
EntityModel<User> model = new EntityModel<>(user.get());
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
}
您正在检查返回的Optional是否为null,但这还不够,因为Optional包装了null或对象。因此,您需要检查您的Optional是否实际上包含一个用户对象。在您的情况下,按以下方式调整代码应该可以工作,请检查Optional是否为空,而不是null。
@GetMapping("/users/{id}")
public EntityModel<User> retrieveUser(@PathVariable int id) {
User user = service.findOne(id);
if(user.isEmpty()) {
throw new UserNotFoundException("id-" + id);
}
//FOLLOWING LINE GIVES ERROR
EntityModel<User> model = new EntityModel<>(user.get());
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
}
Java可选内容的良好指南:https://www.baeldung.com/java-optional