缺少类型为Long的方法参数的URI模板变量'usuarioEntidade'

Edu*_*cke 2 java spring spring-mvc spring-boot

我试着在这个方法中传递一个参数

@RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long usuarioEntidade) throws ServletException { 

        Collection<Distritos> distritosBuscados = distritosService.buscarFiltro(usuarioEntidade);//parametro, que é o id_entidade, para passar na query de busca distritos
            return new ResponseEntity<>(distritosBuscados, HttpStatus.OK);
    } 
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

Missing URI template variable 'usuarioEntidade' for method parameter of type Long 
Run Code Online (Sandbox Code Playgroud)

我正在这个前端呼叫这个请求

 idEntidade = Number(localStorage.getItem("idEntidade"));



$http({
        method : 'GET',
        url : '/user/distrito/' +idEntidade         
    }).then(function(response) {
        $scope.distritos = response.data;

    }, function(response) {
        console.log(response.data);
        console.log(response.status);
    });
}; 
Run Code Online (Sandbox Code Playgroud)

然后出错了..

Missing URI template variable 'usuarioEntidade' for method parameter of type Long
Run Code Online (Sandbox Code Playgroud)

小智 8

您的问题是您的rest请求中的路径变量的名称与传递给您的java方法的变量的名称不匹配.

您有两种选择:

@RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable("idEntidade") Long usuarioEntidade)
Run Code Online (Sandbox Code Playgroud)

要么:

@RequestMapping(method = RequestMethod.GET, value = "/distrito/{usuarioEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long usuarioEntidade)
Run Code Online (Sandbox Code Playgroud)