Помимо @ предложения IanRoberts, вы могли бы сделать использование @Encoded
аннотацию, чтобы добраться до исходного значения недекодированного вас параметр (по умолчанию Джерси декодирует значения, и поэтому id+ASC
становится id ASC
в вашем коде).
Следующий пример возвращает декодированное значение, как для поведения по умолчанию:
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") String sort) {
// sort is "id ASC"
return Response.ok().entity(sort).build();
}
Чтобы изменить поведение, вы просто добавить @Encoded
:
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") @Encoded String sort) {
// sort is "id+ASC"
return Response.ok().entity(sort).build();
}
Строка запроса из 'сортировки = ид + ASC? '_does_ представляет значение параметра« id ASC », потому что строки запроса« application/x-www-form-urlencoded ». Если вы хотите отправить значение параметра «id + ASC», вам нужно будет использовать строку запроса '? Sort = id% 2BASC' –
@IanRoberts, которую я вижу. Наверное, я могу просто жить с ним. –