Мы используем Джерси 1.13. Не мой выбор, но пока мы не можем обновить до более высокой версии.Как получить заголовки http в пользовательских классах параметров пути?
Jersey позволяет использовать созданные пользователем типы java для использования параметров пути. Пример, приведенный в документации что-то вроде этого: метод
Ресурс:
@Path("paint/{color}")
@GET
public Response paint(@PathParam("color") ColorParam color) { ... }
Пользовательский тип Java для параметра пути {цвета}
public class ColorParam {
public ColorParam(String s) {
try {
... // implementation here
} catch (Exception e) {
throw new WebApplicationException("Something's wrong");
}
}
}
мне нужно локализовать My строка ошибки ответа - «Что-то не так». Для этого мне нужна информация заголовка «Accept-Language». Есть ли способ получить его внутри моего класса ColorParam?
Если бы это был класс ресурсов, я мог бы использовать инъекцию «@Context HttpHeaders requestHeaders». Может ли что-то подобное быть достигнуто в моем обычном классе?
Да, пользовательский класс 'ColorParam' не должен создавать ответ, но я не вижу проблем, если он делегирует какой-то вспомогательный класс, который знает, как это сделать, поэтому« ColorParam »затем просто бросает« WebApplicationException (Response response) » , Проблема в том, что для вспомогательного класса необходимо знать запрос Locale для создания правильного ответа. И я не хочу, чтобы «PaintResource» (предположим, что это имя класса ресурсов выше), чтобы создать ответ, потому что я хочу, чтобы этот процесс был прозрачным для классов ресурсов. –