如何使用org.omnifaces.cdi.settings.ApplicationSetting

How to use org.omnifaces.cdi.settings.ApplicationSetting

我找不到任何对此进行解释的示例,所以我发布了这个问题。我正在尝试从 https://github.com/javaeekickoff/java-ee-kickoff-app 构建一个 java ee 应用程序。我在 /META-INF/conf/application-settings.xml 中添加了条目并像这样注入它:

@Inject @ApplicationSetting
private String keyName;

keyName 出现空值。另外,/conf 下还有/dev、/live 和/local-dev。我应该编辑哪个 application-settings.xml 以及如何指定要使用的环境?

使用@ApplicationSetting 非常简单。你可以这样使用它:

@Inject @ApplicationSetting
private String keyName;

keyName 返回 null 因为我在构造函数中使用了 keyName。还没有初始化所以不能用

@WebServlet("/example")
public class Example extends HttpServlet {
    @Inject @ApplicationSetting
    private String keyName;

    public Example() {
        something = keyName // keyName is null
    }
    ...
}

为了使上面的代码工作,我需要一个不同于构造函数的生命周期方法。另外,请确保您的 class 是一个能够使用 @Inject @ApplicationSetting 的 CDI bean。所以修复是:

@WebServlet("/example")
public class Example extends HttpServlet {
    @Inject @ApplicationSetting
    private String keyName;

    @Override
    public void init() throws ServletException {
        something = keyName // keyName is NOT null anymore :)
    }
    ...
}