Java 缺少URI模板变量';通常情况下';对于Long类型的方法参数

Java 缺少URI模板变量';通常情况下';对于Long类型的方法参数,java,spring,spring-mvc,spring-boot,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 usuarioEntida

我尝试在此方法中传递参数

@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);
    } 
我在我的前端呼叫这个请求,就在这里

 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);
    });
}; 
然后我犯了一个错误

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

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

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

@PathVariable(value=“idEntidade”)Long usuarioEntidade您的问题是rest请求中的path变量名称与传递给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/{idEntidade}”,products=MediaType.APPLICATION\u JSON\u value)
公共响应总线cartodosDistritos(@PathVariable(“idEntidade”)Long usuarioEntidade)
或:

@RequestMapping(method=RequestMethod.GET,value=“/distrito/{usuarioEntidade}”,products=MediaType.APPLICATION\u JSON\u value)
公共响应总线CartoDosDistritos(@PathVariable Long usuarioEntidade)

粗体参数需要有相同的名称

@RequestMapping(method=RequestMethod.GET,value=“/distrito/{idEntidade}”,products=MediaType.APPLICATION\u JSON\u value) public ResponseEntity>BusCartosDistritos(@PathVariable Long通常为EntityDade)引发ServletException

正确答案

 @RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
        public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long idEntidade) throws ServletException
@RequestMapping(method=RequestMethod.GET,value=“/distrito/{idEntidade}”,products=MediaType.APPLICATION\u JSON\u value)
公共响应buscarTodosDistritos(@PathVariable Long idEntidade)引发ServletException
@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)
 @RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
        public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long idEntidade) throws ServletException