Как настроить управляемый компонент для работы с документом 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