为什么user.get()方法给我错误?和idk如何使用Google

问题描述 投票:0回答:1

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"));

}
spring-hateoas
1个回答
0
投票

您正在检查返回的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

© www.soinside.com 2019 - 2024. All rights reserved.