2012-09-03 11 views
10

Jaki jest najlepszy i bardziej przenośny sposób uzyskania klienta lokalizacji locale w kontekście żądania Jersey (JAX-RS)? Mam następujący kod:Uzyskiwanie lokalizacji klienta w zapytaniu o koszulkę

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

Należy założyć, że „żądanie” jest wykonany przez jakiegoś kodu javascript w przeglądarce, dzwoniąc window.location = ...;

+0

Czy możesz opisać więcej o problemie? – mssb

Odpowiedz

10

Locale locale = request.getLocale();

2

Klient powinien ustawić Accept-Language header.

+1

Zakłada się, że to prawda. W rzeczywistości moje pytanie było trochę fałszywe, odpowiedź jest prosta: biorąc pod uwagę 'HttpServletRequest' jest to tylko kwestia wywołania' getLocale() '... –

2

Użyj do tego nagłówka HTTP. Aby zażądać wartość liczbową w USA Locale dziesiętne można zażądać tak:

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

Następnie z kodem:

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

Pobieranie danych language/locale można zrobić na różne sposoby, w zależności od ostateczny cel. Według pytanie, uważam, że najbardziej odpowiednim rozwiązaniem jest:

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

Inną potencjalną alternatywą jest za pomocą parametru zapytania język:

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

lub alternatywnie, „Accept-Language” parametr nagłówka:

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