将 Xpage DominoDocument 绑定到 Bean

Binding a Xpage DominoDocument to a Bean

是否可以将 DominoDocument 直接绑定到托管 Bean。这样我就可以在我的 Bean 中有一个 属性,它始终持有对 DominoDocument 的引用?

感谢 suggestions/advices!

正如上面提到的,做你想做的最简单的方法不是将它绑定到你的 bean 中的 属性,而是使用你的 bean 中的方法访问它。

public DominoDocument getDominoDocument() {

    // Whatever the data source name is you want to get
    String documentName = "document1";  

    Object o = ExtLibUtil.resolveVariable(FacesContext.getCurrentInstance(), documentName);

    // Double check that it is a DominoDocument
    if (o instanceof DominoDocument) {
        return (DominoDocument) o;
    }

    return null;

}

如果您无法使用扩展库,请使用:

public DominoDocument getDominoDocument() {

    // Whatever the data source name is you want to get
    String documentName = "document1";  

    // Get the VariableResolver for Current FacesContext and Resolve the variable
    FacesContext facesContext = FacesContext.getCurrentInstance();
    VariableResolver resolver = facesContext.getApplication().getVariableResolver();
    Object o = resolver.resolveVariable(facesContext, documentName);

    // Double check that it is a DominoDocument
    if (o instanceof DominoDocument) {
        return (DominoDocument) o;
    }

    return null;

}

数据源在请求之间使用与托管 bean 持久性略有不同的机制持久化,因此如果将数据源绑定到托管 bean 属性,可能会出现复杂情况,具体取决于持久性类型模式应用程序在 运行 中。虽然我不确定,但可能没问题。 还有一个复杂的DataSource <-> DataContainer <-> DominoDocument生态系统,变量解析器知道如何处理,所以当你想访问它时,直接通过变量解析器是最简单的。