在泽西请求中获取客户端区域设置

在Jersey(JAX-RS)请求的上下文中获取客户端区域设置的最佳和更便携的方法是什么? 我有以下代码:

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

请假设“请求”是由浏览器中的一些javascript代码通过调用window.location = ...;

Locale locale = request.getLocale();

客户端应设置Accept-Language标头 。

使用HTTP标头。 要请求美国区域设置小数中的数值,您可以这样请求:

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

然后从代码:

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

获取语​​言/区域设置数据可以根据最终目标以不同方式完成。 根据这个问题,我认为最合适的解决方案是:

 @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 ) { ... }