Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro 405 Method Not Allowed no spring

Estou criando o controle com as permissões com spring security no meu projeto teste, tenho algumas combos dependentes que eu passo o id via json p minha controller via post e ele me devolve uma lista com resultado, só que agora ele não esta entrando na minha controller e está retornando esse erro. Já mudei o controle de permissoes deixando tudo permitall mas mesmo assim o erro continua, podem me ajudar?

minha controller

    @RequestMapping(value = "/departamento/comboSetor", method = RequestMethod.POST)
    public @ResponseBody List<Setor> retornaComboSetor(@RequestParam int id) {
        System.out.println(id);
        List<Setor> setores = setorDAO.consultarPorId(id);
        return setores;

    }

classe de segurança permissões

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/departamento/**").permitAll()
        .anyRequest().authenticated()
        .and().exceptionHandling().accessDeniedPage("/403")
        .and().formLogin().loginPage("/login")
        .successHandler(new CustomSuccessLoginHandler()).permitAll()
        .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));

    }

o trecho do js que faz a listagem

function combos() {
    $("#divSetor").hide();
    $("#divCategoria").hide();
    $("#divFamilia").hide();
    $("#divSubFamilia").hide();

    // $(document).ready(function() {
    // $("#myModal").modal('show');
    // });

}

$(document).ready(function() {

    $('#CmbDepartamento').change(function() {
        var seleci = $("#CmbDepartamento").val();
        var comboset = document.getElementById('CmbSetor');

        $("#divCategoria").hide();
        $("#divFamilia").hide();
        $("#divSubFamilia").hide();

        if (seleci == 0) {
            comboset = $("#CmbSetor").empty();
            $("#divSetor").hide();
            $("#divCategoria").hide();
            $("#divFamilia").hide();
            $("#divSubFamilia").hide();
            $("#myModal").modal('show');

//            alert("Selecione um Departamento");

        } else {

            $.ajax({
                type : 'POST',
                url : '/Preconizado/departamento/comboSetor',
                dataType : 'JSON',
                data : ({
                    id : seleci
                }),

                success : function(data) {
                    $("#divSetor").show();
                    carregaCombo(data, comboset);

                },
                error : function(data) {
                    console.log("erro na funçao");
                }

            });

        }
    });
});
3 respostas
solução!

Oi Diego, o erro indica que a requisição não está sendo feita como vc espera. Confere no dev tools do seu navegador se a requisição realmente está sendo feita via post? De todo jeito, como vc está consultando, o melhor seria usar get.

Opa Alberto tudo bem? Então eu alterei o método para GET e ajax também e voltou a funcionar, só me tira uma duvida por que é melhor usar get nesse case?

Oi Diego, sempre que vc quer fazer uma busca, o verbo ideial é o get. Post em geral está associado com criação de coisas :).