gpt4 book ai didi

java - Spring Boot中无法进行编辑操作

转载 作者:行者123 更新时间:2023-11-30 06:13:37 25 4
gpt4 key购买 nike

我想在传递 id 和将用户对象返回到 Controller 时编辑我的用户类,但它收到错误,例如“出现意外错误(类型=内部服务器错误,状态=500)”。它告诉我类型转换为可选。我不知道该怎么办。

用户服务类

public User editMyUser(int id) {
return userRepository.findById(id);
}

Controller 类

@RequestMapping("/edit-user")
public String editUser(@RequestParam int id, HttpServletRequest request) {
userService.deleteMyUser(id);

request.setAttribute("user", userService.editMyUser(id));
request.setAttribute("mode", "MODE_UPDATE");
return "welcome";
}

最佳答案

这就是findById看起来像在新版本的 Spring 中(根据文档):

public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {

Optional<T> findById(ID primaryKey);

// .... other methods ...
}

所以,我要在您的代码中更改的第一件事是:

public Optional<User> editMyUser(int id) {
return userRepository.findById(id);
}

让你的方法返回Optional<User> ,也许这会有所帮助。

此外,使用该新方法返回的用户时要小心,例如这里

request.setAttribute("user", userService.editMyUser(id));

Optional您需要使用get()获取实际的用户实例:

userService.editMyUser(id).get()

但首先,您应该检查该Optional是否确实包含用户:

Optional<User> optionalUser = userService.editMyUser(id);

if (optionalUser.isPresent()) {
User user = optionalUser.get();
// do whatever you need
} else {
// means user is null - nothing found for ID
// act accordingly
}

还有一个good documentation Spring 提供的。可能有用。

快乐编码:)

关于java - Spring Boot中无法进行编辑操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49729063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com