我想在Notes视图中设置一个管理Notes文档的受管bean,我在其中存储应用程序首选项(例如,服务器上存储附件的路径、应用程序标题、要显示的徽标等)。谁有这样的bean的示例以及我应该如何使用它?
目前,我加载了一个SSJS库,并将所有内容都放在应用程序作用域或会话作用域变量中。
发布于 2013-06-10 00:28:03
下面是这样一个托管bean的简单示例。
首先创建一个Java类。我把它叫做"Config“。它读取视图"Config“中的第一个文档,并在实例化时(=first call)将项目放入java字段中。这样做,您可以在读取所有项之后回收domino对象,然后将值保存在内存中。
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
}接下来,在faces-config.xml文件中将此Java类定义为托管bean:
<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>您可以使用作用域"application“(每个服务器的实例)或"session”(每个用户的实例)。
然后,您可以在JavaScript中使用配置bean:
#{javascript:var titel = config.applicationTitle; ...}或表达式语言:
#{config.applicationTitle}这将为您开发配置bean的高级版本提供一个很好的起点。
发布于 2013-06-10 18:48:11
应用程序范围的bean绝对是实现这一点的好方法。一旦你熟悉了Java,你可能会考虑使用VariableResolver,或者甚至OSGi插件,如果其中一些选项是服务器范围的。我还发布了一个用于从xsp.properties检索值的XSnippet,它可能也适用于某些设置http://openntf.org/s/retrieve-property-from-xsp.properties-in-nsf-server-or-notes.ini
https://stackoverflow.com/questions/17010788
复制相似问题