2012-09-03 3 views
10

클라이언트 로케일을 저지 (JAX-RS) 요청의 컨텍스트에서 얻는 가장 좋고 이식 가능한 방법은 무엇입니까?저지 요청에서 클라이언트 로켈 받기

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

은 "요청"브라우저 내에서 일부 자바 스크립트 코드로 구성되어 있다고 가정하십시오, window.location = ...;

+0

문제에 대해 더 자세히 설명해 주시겠습니까? – mssb

답변

10

Locale locale = request.getLocale();

2

클라이언트가 Accept-Language header을 설정해야합니다를 호출하여 : 나는 다음과 같은 코드가 있습니다.

+1

그건 사실이라고 가정합니다. 실제로 제 질문은 가짜였습니다. 대답은 간단합니다 :'HttpServletRequest'를 주면 getLocale()을 호출하는 것입니다. –

2

HTTP 헤더를 사용하십시오. 미국 로케일에 숫자 값을 요청하는 것은 당신이 그런 식으로 요청할 수 있습니다 진수 : 언어/로케일 데이터를 얻기

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

가에 따라 다른 방법으로 수행 할 수 있습니다 : 코드에서 다음 GET /metrics/007/size Accept-Language: en-US

최종 목적. 질문에 따라, 나는 가장 적합한 솔루션이라고 생각 : 또는

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

또는 "Accept-Language"헤더 매개 변수 : 또 다른 잠재적 인 대안 언어 쿼리 매개 변수를 사용

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

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