Как настроить управляемый компонент для работы с документом Notes

Я хотел бы настроить управляемый bean-компонент, который управляет документом Notes в представлении Notes, в котором я храню настройки приложения (например, путь на сервере для хранения вложений, заголовок приложения, логотип для отображения и т. Д.) Есть ли у кого-нибудь пример для такого bean-компонента и как я должен это использовать?

В настоящее время я загружаю библиотеку SSJS и помещаю все в область видимости приложения или переменную области видимости.

2 ответа

Вот простой пример для такого управляемого компонента.

Сначала создайте класс Java. Я назвал это "Конфиг". Он читает первый документ в представлении "Config" и помещает во время создания экземпляра (= первый вызов) элементы в поля Java. Делая это, вы можете перерабатывать объекты домино после прочтения всех элементов и сохранять значения в памяти.

package de.leonso;
import java.io.Serializable;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.View;
import com.ibm.xsp.extlib.util.ExtLibUtil;

public class Config implements Serializable {
    private static final long serialVersionUID = 1L;    
    private String applicationTitle;
    // ... other private fields

    public Config() throws NotesException {
        Database db = ExtLibUtil.getCurrentSession().getCurrentDatabase();
        View view = db.getView("Config");
        Document doc = view.getFirstDocument();
        applicationTitle = doc.getItemValueString("ApplicationTitle");
        // ... read all other items and store them in private fields
        doc.recycle();
        view.recycle();
        db.recycle();
    }

    public String getApplicationTitle() {
        return applicationTitle;
    }

    // ... getters for other private fields

}

Затем определите этот Java-класс как управляемый bean-компонент в файле face-config.xml:

<faces-config>
  <managed-bean>
    <managed-bean-name>config</managed-bean-name>
    <managed-bean-class>de.leonso.Config</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
  </managed-bean>
</faces-config>

Вы можете использовать в качестве области "приложение" (экземпляр на сервер) или "сеанс" (экземпляр на пользователя).

Затем вы можете использовать bean-компонент config в JavaScript:

#{javascript:var titel = config.applicationTitle; ...}

или язык выражения:

#{config.applicationTitle}

Это должно дать вам хорошую отправную точку для разработки расширенной версии bean-компонента config.

Бин в области приложения, безусловно, является хорошим способом для этого. Как только вы освоитесь с Java, вы можете захотеть использовать вместо него VariableResolver или даже плагин OSGi, если некоторые из этих опций относятся к общему серверу. Я также разместил XSnippet для извлечения значений из xsp.properties, который также может быть подходящим для некоторых настроек http://openntf.org/s/retrieve-property-from-xsp.properties-in-nsf-server-or-notes.ini

Другие вопросы по тегам