NotSupportedException.请求方法不支持'PUT'。不支持请求方法 "PUT"。为什么?

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

有一个 AdminService 类,继承自 UserService. UserServicechangePassword 方法。因此,当我输入一个有效的 login,但只要我输入一个无效的 login 我的错误处理程序不工作。为什么?

除了 if 构,我还尝试了 try catch,但结果是一个。

我正在使用Spring MVC + REST + Spring Security + Jpa + Hibernate + PostgreSQL编写一个项目。

UserService:

@Service
public class UserService implements UserDetailsService {


    // Fields
    //
    private UserRepository userRepository;

    private PasswordEncoder passwordEncoder;


    // Injects are here
    //
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Autowired
    public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }


    // Методы
    //
    // 
    public User changePassword(String login, String newPass) throws UsernameNotFoundException {
        User user = getUserDataByLogin(login);
        if (user == null) {
            throw new UsernameNotFoundException("not found" + login);
        } else {
            user.setPassword(passwordEncoder.encode(newPass));
            return userRepository.save(user);
        }
    }

AdminController:

@PutMapping("/change/password")
    User changePassword(@RequestParam String login, @RequestParam String newPass) {
        return userService.changePassword(login, newPass);
    }

UserRepo:

public interface UserRepository extends JpaRepository<User, Long> {

    // Найти пользователя по Login (логин универсален)
    User getByLogin(String login);

}
2020-05-14 22:25:30.094  WARN 21000 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported]
java spring-boot jpa exception
1个回答
0
投票

你正在调用

if (user.equals(null)) {
        throw new UsernameNotFoundException("not found" + login);
    } 

当用户为null时,所以你是想在一个null对象中访问到equals,这时抛出异常,比较null是否比较好的方法是这样做的。

    if(user == null) {
     //
    }
© www.soinside.com 2019 - 2024. All rights reserved.