Я последовал за этим сообщением и создал первым настраиваемым поставщиком инъекций LocaleProvider
, который сканирует HTTP-запрос на заголовок Accept-Language .Это прекрасно работает, если я использую его в ресурсе Джерси:
@Path("test")
@GET
public Response getStatus(@Context Locale locale) {
log.finer("Locale: "+ locale);
Response response = Response
.noContent()
.build();
return response;
}
Но когда я хочу использовать его в ExceptionMapper
, я не знаю, как внедрить локаль.Я пытался аннотировать его как переменную-член:
public class MyExceptionMapper implements ExceptionMapper<MyException> {
@Context
private Locale locale;
@Override
public Response toResponse(MyException ex) {
...
}
}
, но это не удается при развертывании:
The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for field: private java.util.Locale com.package.MyExceptionMapper.locale
Другие вещи, такие как UriInfo
или HttpServletRequest
могут впрыснуть так.Как я могу получить доступ к своему собственному LocaleProvider?
К вашему сведению, это на Glassfish 3.1.1 с использованием Джерси 1.8.