Tôi đã theo dõi this post và được tạo bởi nhà cung cấp tiêm tùy chỉnh đầu tiên, LocaleProvider
quét yêu cầu HTTP cho tiêu đề Accept-Language. Nó hoạt động tốt nếu tôi sử dụng nó trong vòng một nguồn tài nguyên Jersey:Jersey: cách sử dụng InjectableProvider với chú thích @Context?
@Path("test")
@GET
public Response getStatus(@Context Locale locale) {
log.finer("Locale: "+ locale);
Response response = Response
.noContent()
.build();
return response;
}
Nhưng khi tôi muốn sử dụng nó trong một ExceptionMapper
Tôi không biết làm thế nào để tiêm miền địa phương. Tôi đã cố gắng để chú thích nó như là một biến thành viên:
public class MyExceptionMapper implements ExceptionMapper<MyException> {
@Context
private Locale locale;
@Override
public Response toResponse(MyException ex) {
...
}
}
nhưng điều này không thành công ở việc triển khai:
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
Những vấn đề khác như UriInfo
hoặc HttpServletRequest
thể được tiêm như thế. Làm cách nào để tôi có quyền truy cập vào LocaleProvider của chính mình?
FYI đây là trên Glassfish 3.1.1 sử dụng Jersey 1.8.
Hey Hank, bạn đã bao giờ có thể nhận được LocaleProvider này làm việc với một ExceptionMapper? –
Không. Tôi đã thực hiện phát hiện locale bên trong ExceptionMapper. Tôi có lẽ nên đóng câu hỏi này ... – Hank