如何从 Java Bean 获取数据源 (document1) 的句柄

How can I get a handle to DataSource (document1) from a Java Bean

如何从 Java Bean 获取 XPages 上的数据源句柄并调用其 Save() 方法?

默认变量(ID)是'document1'。

在 ServerSide JavaScript 中,它是一个变量 document1.save(); //很简单。

但是,在 JSF 中,我想我必须使用组件树 facesContext 来获取它的句柄。

想法?

document1a "NotesXspDocument" (in Domino's SSJS), the specific Java class being com.ibm.xsp.model.domino.wrapped.DominoDocument 的句柄。在不通过参数将引用句柄传递给方法的情况下,获取此类已定义 document1 句柄的最简单方法是解析变量。

您可以使用 resolveVariable(String name) 的扩展库的 ExtLibUtil 方法,9.0 之前。1_v15 这需要 FacesContext 实例的第二个参数; resolveVariable(FacesContext ctx, String name).

或者,您可以完全跳过 ExtLibUtil,尽管我更喜欢它并经常使用它,如下所示:

DominoDocument myDoc = (DominoDocument) FacesContext.getCurrentInstance()
    .getApplication().getVariableResolver()
    .resolveVariable(FacesContext.getCurrentInstance(), "document1");

从我们正在解析变量的事实中可以看出,通过用户的 FacesContext 实例,document1 实际上必须 exist/be 可以访问给定的 FacesContext 实例为此工作。 ExtLibUtil 方法都 are wrappers to the FacesContext variable resolver.