2015-10-21 4 views
2

Вызов REST с помощью логического параметра получает значение false, хотя и передается true на стороне клиента.@QueryParam boolean получает false, хотя передано значение 'true'.

Клиент:

$http.post("http://localhost/getServers/?light=true") 

Сервер:

@Path("/getServers") 
@POST 
@Produces({MediaType.APPLICATION_JSON}) 
public Response getServers(
    @Context HttpServletRequest request, 
    @DefaultValue("true") @QueryParam("light") boolean light) 
{ 
    // light is false even though true was passed 
    ... 
} 

ответ

2

Кажется, что слэш (/) перед знаком вопроса (?) была проблема.

После удаления косой черты на стороне клиента все работает нормально.

Это сработало:

$http.post("http://localhost/getServers?light=true") 

НО, от чтения в Интернете, слэш, предшествующий знак вопроса является законным синтаксис :(

+1

Закономерно в общем запросе HTTP, но не для контракта вы писали, то есть '@Path ("/getServers ")' не совпадает с '@Path ("/getServers/")'. –