Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

spring boot erro 405

Quando tento armazenar um cliente esta dando esse erro, segue a classe cliente e a controller

Method 'PUT' is not supported. org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' is not supported

@Controller @RequestMapping("/estacionamento") public class EstacionamentoController {

@Autowired
private ClienteRepository repository;
@Autowired
private DonoRepository reposito;


@Autowired
private ClienteRepository clienteRepository; // Supondo que você tenha um repositório de usuários


@GetMapping("/vaga")
public String exibirFormularioLogin() {
    return "estacionamento/vaga"; // Retorna a página de login
}
@PostMapping("/vaga")
public String fazerLogin(@RequestParam String senha, @RequestParam String email, Model model) {
    // Verifique se o usuário existe no banco de dados
    Cliente usuario = clienteRepository.findBySenhaAndEmail(senha, email);

    if (usuario != null) {
        // Usuário válido, redirecione para a página inicial ou outra página autorizada
        System.out.println("DEU CERTO");
        return "redirect:/estacionamento/vaga";
    } else {
        // Usuário inválido, mostre uma mensagem de erro
        model.addAttribute("erro", "CPF ou email inválidos");
        return "redirect:/estacionamento";
    }
}
@GetMapping
public String carregaPaginaInicial() {
    return "estacionamento/Inicial";
}

@GetMapping("/dono")
public String carregaPaginaEstacionamento() {
    return "estacionamento/dono";
}



@GetMapping("/cliente")
public String carregaPaginaFormulario() {
        return "estacionamento/cliente";
    }

@GetMapping("/listagem")
public String carregaPaginaListagem(Model model) {
    model.addAttribute("lista", repository.findAll());

    return "estacionamento/listagem";
}

@GetMapping("/login_usuario")
 public String loginPage() {
   return "estacionamento/login_usuario"; 

}

    @GetMapping("/login-erro")
    public String loginErro() {
        return "redirect:/login_usuario?error=true"; // Redirecione para a página de login com mensagem de erro
    }

@PostMapping
public String cadastraCliente(CadastroCliente dados, Model model) {
    var cliente = new Cliente(dados);
  repository.save(cliente);
    System.out.println(cliente);
    return  "redirect:/estacionamento";
}

@PostMapping("/dono")
public String cadastraDono(CadastroDonoEstacionamento dados_2,Model model1) {
    var donoestacionamento = new DonoEstacionamento(dados_2);
    reposito.save(donoestacionamento);
    System.out.println(donoestacionamento);

    return  "estacionamento/dono";
}
@DeleteMapping
public String removeCliente(Long id) {
        repository.deleteById(id);
        return "estacionamento/cliente";
}
 
    
}

package com.example.estacionamento.domain.cliente;

import com.example.estacionamento.controller.CadastroCliente;

import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table;

@Entity @Table(name = "cliente") public class Cliente {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
@Column(name = "nome")
public String nome;
@Column(name="datadenascimento")
public String dataNascimento;
@Column(name="cpf")
public String cpf;
@Column(name="email")
public  String email;
@Column(name="senha")
public String senha;
//public String carro;

@Override
public String toString() {
    return "Nome: " + nome +
            ", Data de Nascimento: " + dataNascimento+
           ", Email: " + email +
           ", CPF: " + cpf 
           ;
}

public Cliente() {
    
}
 public Cliente(CadastroCliente dados) {
        this.cpf=dados.cpf();
        this.dataNascimento=dados.dataNascimento();
        this.email=dados.email();
        this.nome=dados.nome();
        this.senha=dados.senha();	        
    }

}

1 resposta
solução!

Oi Emanuel, tudo bem?

Olhando para o código que você compartilhou, não vejo nenhum método 'PUT' sendo usado.

A maioria das suas requisições são do tipo 'GET' e 'POST'. Você tem um 'DELETE' também, mas nenhum 'PUT'. Isso me faz pensar que o erro pode estar ocorrendo em outra parte do seu código que não foi compartilhada aqui.

No entanto, se você estiver tentando atualizar um cliente, você normalmente usaria um método 'PUT' ou 'PATCH'. No Spring Boot, isso poderia se parecer com o seguinte:

@PutMapping("/cliente/{id}")
public String atualizaCliente(@PathVariable Long id, @RequestBody CadastroCliente dados, Model model) {
    Cliente clienteExistente = repository.findById(id);
    if (clienteExistente != null) {
        clienteExistente.setNome(dados.nome());
        clienteExistente.setDataNascimento(dados.dataNascimento());
        clienteExistente.setEmail(dados.email());
        clienteExistente.setCpf(dados.cpf());
        clienteExistente.setSenha(dados.senha());
        repository.save(clienteExistente);
        return "redirect:/estacionamento";
    } else {
        model.addAttribute("erro", "Cliente não encontrado");
        return "redirect:/estacionamento/erro";
    }
}

Por favor, verifique o restante do seu código para encontrar onde o método 'PUT' está sendo usado, e se você realmente precisa dele. Se você estiver tentando atualizar um cliente, o exemplo acima pode ser útil.

Um abraço e bons estudos.