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

时间:2017-10-13 20:40:25

标签: java spring spring-mvc spring-boot

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

server {
listen 80;
server_name 111.11.111.111;

return 301 $scheme://yourname.com$request_uri;

我收到了这个错误

@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);
    } 

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

Missing URI template variable 'usuarioEntidade' for method parameter of type Long 

然后出错了..

 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);
    });
}; 

3 个答案:

答案 0 :(得分:6)

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

您有两种选择:

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

或者:

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

答案 1 :(得分:0)

您必须在buscarTodosDistritos()方法中进行更改,如下所示

@PathVariable(value="idEntidade") Long usuarioEntidade  <--- add value in path variable

@PathVariable Long idEntidade   <--- or change variable name to map same as the one in the url

答案 2 :(得分:0)

粗体参数必须具有相同的名称

@RequestMapping(方法= RequestMethod.GET,值=“ / distrito / { idEntidade }”,产生= MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> buscarTodosDistritos(@PathVariable Long usuarioEntidade )抛出ServletException

正确答案

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