如何设置托管bean以使用Notes文档

Pat*_*ten 5 xpages

我想在Notes视图中设置一个管理Notes文档的托管bean,我在其中存储应用程序首选项(例如,服务器上的路径以存储附件,应用程序标题,要显示的徽标等)有没有人为这样的bean和我应该如何使用它?

当前我加载一个SSJS库,将所有内容放在应用程序范围或会话范围变量中.

Knu*_*ann 13

这是一个这样的托管bean的简单示例.

首先创建一个Java类.我称之为"Config".它在视图"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

}
Run Code Online (Sandbox Code Playgroud)

接下来,在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>
Run Code Online (Sandbox Code Playgroud)

您可以使用作为范围"应用程序"(每个服务器的实例)或"会话"(每个用户的实例).

然后你可以在JavaScript中使用配置bean:

#{javascript:var titel = config.applicationTitle; ...}
Run Code Online (Sandbox Code Playgroud)

或表达语言:

#{config.applicationTitle}
Run Code Online (Sandbox Code Playgroud)

这应该为您提供开发配置bean的高级版本的良好起点.