我在 Spring Boot restcontroller 方面遇到了困难。用户服务@Servicepublic class UserService implements IUserService { @Autowired public PasswordEncoder passwordEncoder; private final UserRepository userRepository; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public UserLoginResponse register(RegisterUserRequest request) throws NoValidRegisterDataException, Exception { UserLoginResponse response = new UserLoginResponse(); UserEntity user = request.getUser(); if(!this.checkUserDataValidity(user)) { throw new NoValidRegisterDataException(); } user.setPassword(this.encodePassword(user.getPassword())); try { user = this.userRepository.save(user); } catch (Exception e) { throw new Exception("Database save error"); } response.addMessage(new ResponseMessage(ResponseMessageType.success, "Uživatel úspěšně registrován")); response.setUser(user); //TODO token handler return response; } private boolean checkUserDataValidity(UserEntity user) { return (user.getEmail() != null && user.getPassword() != null && user.getUsername() != null); } private String encodePassword(String password) { return this.passwordEncoder.encode(password); }}到目前为止,我有一个服务注册(主要方法)。它由 UserController 调用(下面的代码)@RestControllerpublic class UserController { private final UserService userService; public UserController(UserService userService) { this.userService = userService; }第一个问题是,当发生不好的事情(错误的用户数据,其他一些错误)时,我会得到空的 UserLoginResponse 对象。大多数情况下没问题,但我没有消息。(错误消息设置在 UserController 的 catch 块中,因此它们应该在那里。)第二个问题是,即使我在 UserController 的第一个 catch 块(一般异常)中抛出 NoValidRegisterDataException 异常也由最后一个 catch 块处理。我怎样才能解决这个问题?我认为异常是由它适合的第一个 catch 块处理的(从上到下)。编辑:我已经解决了第二个问题。我没有注意到抛出异常的条件是抛出空指针异常。所以现在说得通了。我添加了空检查,异常现在工作正常。但我仍然不知道如何返回整个响应,包括来自父响应对象的消息。
添加回答
举报
0/150
提交
取消