Как использовать org.omnifaces.cdi.settings.ApplicationSetting - PullRequest
0 голосов
/ 11 мая 2018

Я не смог найти никаких примеров с объяснением этого, поэтому я отправляю этот вопрос. Я пытаюсь создать шаблон приложения Java из https://github.com/javaeekickoff/java-ee-kickoff-app.. Я добавил записи в /META-INF/conf/application-settings.xml и внедрил его так:

@Inject @ApplicationSetting
private String keyName;

но keyName приходит в ноль. Также в / conf находятся / dev, / live и / local-dev. Какую application-settings.xml мне следует отредактировать и как указать, какую среду использовать?

1 Ответ

0 голосов
/ 16 мая 2018

Использование @ApplicationSetting довольно просто. Вы используете это так:

@Inject @ApplicationSetting
private String keyName;

keyName возвращал ноль, потому что я использовал keyName внутри конструктора. Он еще не инициализирован, поэтому он не будет работать.

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

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

Чтобы приведенный выше код работал, мне нужен метод жизненного цикла, отличный от конструктора. Кроме того, убедитесь, что ваш класс является компонентом CDI, чтобы иметь возможность использовать @Inject @ApplicationSetting. Итак, исправление:

@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 :)
    }
    ...
}
...