2012-09-03 14 views
10

¿Cuál es la mejor y más portátil forma de obtener ubicación del cliente en el contexto de una solicitud de Jersey (JAX-RS)? Tengo el siguiente código:Obtener la configuración regional del cliente en una solicitud de jersey

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

Por favor, asuma que la "solicitud" se realiza mediante un código JavaScript en un navegador, llamando window.location = ...;

+0

¿Puede describir más acerca del problema? – mssb

Respuesta

10

Locale locale = request.getLocale();

2

El cliente debe establecer el Accept-Language header.

+1

Se supone que es cierto. De hecho, mi pregunta era un poco falsa, la respuesta es directa: dado el 'HttpServletRequest' es solo cuestión de llamar a' getLocale() '... –

2

Utilice el encabezado HTTP para eso. Para solicitar el valor numérico en la configuración regional de EE.UU. decimal se puede pedir así:

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

A continuación, a partir del código:

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

Obtener datos de lenguaje/locale se puede hacer de diferentes maneras, dependiendo de el objetivo final. De acuerdo con la pregunta, creo que la solución más adecuada es:

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

Otra alternativa potencial está utilizando un parámetro de consulta de lenguaje:

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

O, alternativamente, el parámetro de cabecera "Accept-Language":

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