Получение локали клиента в запросе на трикотаж

Каков наилучший и более удобный способ получить локаль клиента в контексте запроса Джерси (JAX-RS)? У меня есть следующий код:

@GET
@Produces("text/html")
@Path("/myrequest")
public Response myRequest(@Context HttpServletRequest request) {
    Locale locale = ...
}

Предположим, что "запрос" выполняется с помощью некоторого кода JavaScript в браузере, вызывая window.location = ...;

Ответ 1

Locale locale = request.getLocale();

Ответ 3

Используйте для этого заголовок HTTP. Чтобы запросить числовое значение в десятичной системе US Locale, вы можете запросить следующее:

GET /metrics/007/size Accept-Language: en-US

Затем из кода:

public Response myRequest(@Context HttpServletRequest request) {
Locale locale = request.getLocale();
...
}

Ответ 4

Получение языковых/локальных данных может осуществляться по-разному в зависимости от конечной цели. Согласно этому вопросу, я считаю, что наиболее подходящим решением является:

@GET
public Response myRequest( @Context HttpServletRequest request )
{
   Locale locale = request.getLocale();
   ...
}

Другой потенциальной альтернативой является использование параметра запроса языка:

@GET
public Response myRequest( @QueryParam( "language" ) String language )
{
   ...
}

Или, альтернативно, параметр заголовка "Accept-Language":

@GET
public Response myRequest( @HeaderParam( "Accept-Language" ) String acceptLanguage )
{
   ...
}