JAX-RS, параметры пути не работают

Я пытаюсь передать параметр через GET в метод REST.

@GET
@Path("{id}")
public Response getUser(@PathParam("id") String id) {
    Query qry = em.createQuery("from User c WHERE id = :user_id");
    qry.setParameter("user_id", id);
    List<User> results = qry.getResultList();

    if(results.size() > 0) {
        return Response.ok(results.get(0),MediaType.APPLICATION_JSON_TYPE).build();
    } else {
        return Response.serverError().status(Response.Status.NOT_FOUND).build();
    }
}

Если я позвоню через Rest Client с помощью:

client = ClientBuilder.newClient();    
Response response = client.target(TestPortProvider.generateURL("/user")+"/abc").request().get(Response.class);

тогда метод вызывается, но параметр пуст. Если я удалю "abc" из ссылки GET метод не вызывается. Также, если я удалю @Path("{id}") это тоже не работает. Кажется, что есть параметр, но он пуст без причины. Может быть, кто-то может помочь мне решить проблему.

С уважением

4 ответа

Решение

К сожалению, причиной был неправильный импорт для PathParam. так что большое примечание к моему столу... если непроверенные вещи не работают... проверьте ваш импорт, который генерируется вашей IDE.

{} не требуется в параметре метода, просто дайте имя. Попробуйте следующее:

 public Response getUser(@PathParam("id") String id) 

Импорт может быть по умолчанию:

import javax.websocket.server.PathParam;

Замените его на один из API JAX-RS:

import javax.ws.rs.PathParam;

Причина, по которой это не сработало бы, - неправильный импорт для PathParam. Поэтому импортируйте javax.ws.rs.PathParam и проверьте его снова.

Другие вопросы по тегам