我正在尝试创建一个允许用户更新、编辑、删除等功能的网站,我已经到了更新或编辑用户信息的部分。我已经用不同的方法尝试了很多次,但我似乎不能通过这个错误。我完全不知道可选<>我就是不明白。我已经阅读了 https:/docs.oracle.comjavase8docsapijavautilOptional.html。但我不明白它应该如何编码,它只是不点击。如果有人可以请告知它应该如何在我的代码编码,并请解释它,我将非常感激。也许是因为我工作过度,没有睡觉,但我似乎不能纠正这个错误。这是我在页面上得到的错误,当我试图编辑一个用户的信息。
There was an unexpected error (type=Internal Server Error, status=500).For input string: "id "java.lang.NumberFormatException。对于输入字符串:id
//Repository
public interface UserRepository extends CrudRepository<User, Integer> {
}
这里是用户服务
//UserService
@Service
@Transactional
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository=userRepository;
}
public void saveMyUser(User user) {
userRepository.save(user);
}
public List<User> showAllUsers(){
List<User> users = new ArrayList<User>();
for(User user: userRepository.findAll()) {
users.add(user);
}
return users;
}
public void deleteMyUser(int id) {
userRepository.deleteById(id);
}
public User editUser (int id) {
return userRepository.findById(id);//I also get an error here as well
}
}
这里是控制器
//Application Controller
@Controller
public class ApplicationController {
@Autowired
private UserService userService;
// THIS IS WHERE I GET THE ERROR
@RequestMapping("/edit-user")
public String editUser(@RequestParam int id,HttpServletRequest request) {
/* OPTIONAL<?> is this where i would implement the
optional what do i have to put here exactly?
I tried some ways I read about but its not working for me */
request.setAttribute("user", userService.editUser(id));
request.setAttribute("mode", "MODE_UPDATE");
return "welcome";
}
}
谢谢你的帮助,提前我有点沮丧,因为我一直试图纠正这个错误,整个晚上。
有几种方法可以将一个选项转换为一个实体。你可以使用以下几种方法。
使用get()方法:
public User editUser (int id) {
userRepository.findById(id).get();
}
使用orElse方法
public User editUser (int id) {
/* new User() is stab if user was not found */
return userRepository.findById(id).orElse(new User());
}
使用orElseThrowMethod:
public User editUser (int id) {
/* Throw exception if user was not found*/
return userRepository.findById(id).orElseThrow(IllegalArgumentException::new));
}
至于controller,它将会是这样的。
@RequestMapping("/edit-user")
public String editUser(@RequestParam int id,HttpServletRequest request) {
User user = userService.editUser(id);
request.setAttribute("user", user);
request.setAttribute("mode", "MODE_UPDATE");
return "welcome";
}
你的题目也有类似的问题。
希望能帮到你:)