![](/img/trans.png)
[英]How do I get a ConversationScoped CDI bean from inside a Filter?
[英]How do I get the requests HttpHeaders in a CDI bean in Quarkus?
我想獲得對 select 的原始請求的 AcceptableLanguage header 正確的翻譯語言。
我認為這會起作用:
import javax.ws.rs.core.HttpHeaders;
@ApplicationScoped
public class TranslationService{
@Context HttpHeaders httpHeaders;
....
}
看起來,我總是得到一個null
值。 當我直接在 RestEasy controller 中嘗試@Context
字段時,該字段分配有當前的 HttpHeaders object。
我已經嘗試將ContrainerRequestFilter
內的 http 標頭保存到@RequestScoped
bean,盡管該值似乎再次丟失,直到在我的TranslationService
中使用。
我如何在 quarkus 中獲取或提供請求 http 標頭,以便任何 bean 都可以訪問它們?
它實際上確實與ContainerRequestFilter
一起工作
我添加了以下過濾器
@Provider
@PreMatching
public class UserInfoProvider implements ContainerRequestFilter {
private final UserInfo userinfo;
@Inject
public UserInfoProvider(UserInfo userinfo) {
this.userinfo = userinfo;
}
@Override
public void filter(ContainerRequestContext requestContext) {
List<Locale> acceptableLanguages = requestContext.getAcceptableLanguages();
userinfo.setAcceptableLanguages(acceptableLanguages);
}
}
其中 bean UserInfo
是@RequestScoped
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.