【问题标题】:Binding a Xpage DominoDocument to a Bean将 Xpage DominoDocument 绑定到 Bean
【发布时间】:2017-03-30 20:52:16
【问题描述】:

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

感谢任何建议/建议!

【问题讨论】:

  • 为了非常容易访问,您可以通过变量解析器方法使用 currentDocument 对象(可以在最新的扩展库和 JSFUtil 的各种实现中找到)
  • 好的,如果我有两个数据源呢?
  • 然后您可以使用他们的数据源名称而不是“currentDocument”
  • 我完全不明白你为什么想要一个 DominoDocument。如果你想进入 ManageBeans,那么页面应该直接与 bean 对话,或者通过 pageController 更好。然后 bean 或控制器将根据需要使用后端文档进行读写。我没有看到从 bean 内部保留对 DominoDocument 的引用的好用例。

标签: xpages managed-bean


【解决方案1】:

如上所述,做你想做的最简单的方法是将其绑定到 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 生态系统,变量解析器知道如何处理它,所以当你想访问它时,最简单的方法是通过变量解析器。

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多