Установка документа как глобального свойства в классе Java, не работает - PullRequest
0 голосов
/ 21 октября 2018

В моем приложении Xpages у меня есть класс Java, в котором я хочу установить Document как глобальное свойство и повторно использовать его в своих методах.Документ представляет собой документ конфигурации Notes, и я хочу выполнить поиск только один раз.К сожалению, это не работает, как ожидалось.Возможно, кто-то может направить меня к правильному процессу?

Сначала я настроил управляемый компонент:

<managed-bean>
    <managed-bean-name>emplDataMining</managed-bean-name>
    <managed-bean-class>se.bank.employeeApp.utils.EmployeeDataMining</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
</managed-bean>

Мой класс содержит несколько методов, которые будут использоваться в разных системах.Все URL-адреса системы хранятся в документе конфигурации Notes, который я хочу загрузить только один раз и повторно использовать для этих методов

public class EmployeeDataMining implements Serializable{

    private static final long serialVersionUID = 1L;
    private Document configuration;

    //constructor class. not so very special, so I wont post it

    public void getConfiguration(){
        //setting up database and view
        //only 1 document stored in the view so I can hard-code the reference
        configuration = vw.getDocumentByKey("ConfigDocument", true);
        //... rest of code e.g. setting up httpclient, JSONobj
    }

    public void collectDataFromSystemX(CloseableHttpClient httpclient, Employee employee, JSONObject JSONobj){
        //I wont post all of my code  
        HttpPost httpPost = new HttpPost(this.configuration.getItemValueString("urlSystemX"));
        //this.configuration is null :-?
        //..rest of code
    }

    public void collectDataFromSystemY(CloseableHttpClient httpclient, Employee employee, JSONObject JSONobj){
        //I wont post all of my code  
        HttpPost httpPost = new HttpPost(this.configuration.getItemValueString("urlSystemY"));
        //this.configuration is null :-?
        //..rest of code
    }

}

Мой код инициируется из SSJS:

emplDataMining.getConfiguration(); 
emplDataMining.collectDataFromSystemX(//passing in the variables which are setup in getConfiguration method)

Таким образом, моя главная проблема в том, что профиль документа не установлен должным образом или не используется между методами.

Может кто-нибудь сказать мне, что я упустил?

1 Ответ

0 голосов
/ 22 октября 2018

Существует 2 проблемы:

  • при просмотре в области видимости бин перезагружается для каждого документа, который вы открываете.Если это документ конфигурации, вы хотите использовать область сеанса
  • . Вы не можете хранить объекты Notes в управляемых компонентах (область запроса может работать).Что вы делаете вместо этого: в конструкторе вашего компонента загружайте документ и извлекайте значения полей во внутренние переменные компонента (строки, списки и т. Д.).Это даст вам то, что вы хотите
...