在泽西请求中获取客户端区域设置
在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 ) { ... }