如何使用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 :)
}
...
}
我找不到任何对此进行解释的示例,所以我发布了这个问题。我正在尝试从 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 :)
}
...
}