是否可以将DominoDocument直接绑定到Managed Bean。所以我可以在我的Bean中有一个属性,它始终保存对DominoDocument的引用?
感谢任何建议/意见!
答案 0 :(得分:3)
如上所述,执行所需操作的最简单方法是将其绑定到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生态系统,因此当你想要访问它时,最简单的就是通过变量解析器。