首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xpages:引用来自不同数据库/应用程序的视图

xpages:引用来自不同数据库/应用程序的视图
EN

Stack Overflow用户
提问于 2015-05-20 14:00:04
回答 2查看 587关注 0票数 1

我对xpage很陌生。我在网上搜索我的问题已经有一段时间了。似乎答案应该很简单。

我一直在玩我从Balassaitis的优秀Xcellerent.net站点获得的代码片段,该站点动态地填充了一个视图面板的"jumptoitems“列表。代码是从xpage的beforeRenderResponse事件运行的。

代码语言:javascript
复制
var viewName = getComponent('viewPanel1').getData().getViewName();
var vw = database.getView(viewName);
var colNum = 1;
var cols:Vector = vw.getColumns();
for (var i=0; i < cols.length; i++) {
    if (cols[i].isSorted() && !cols[i].isHidden()) {
        colNum = i + 1;
        break;
    }
}
var letters = @DbColumn(null, viewName, colNum);
var options = @Trim(@Unique(@UpperCase(@Left(letters, 1))))
viewScope.put('jumpToOptions', options);

它工作得很好--但我想修改代码,以引用另一个数据库中的视图。布拉德在帖子中说,代码可以“增强”来完成这一任务。但我已经做了一段时间的实验和搜索,无法完成增强。

谢谢你的帮助。--丽莎&

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-20 14:15:00

在第二行中,通过viewName从组件viewPanel1中提取的视图上建立一个句柄。您的电话是database.getView(viewName)。这相当于http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.api.doc/r_domino_Database.htmlhttp://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.api.doc/r_domino_Database_getView.html的编程引用。如果要连接到的其他数据库上有一个句柄,则可以对该句柄调用相同的.getView()调用。

首先,建立到另一个数据库的连接;这是通过session关键字(即http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.api.doc/r_domino_Session.html)完成的,如下所示:

代码语言:javascript
复制
var extDB = session.getDatabase(dbName)

正如Howard所指出的,session关键字是当前用户的会话,并且将作为该用户受所有ACL权限/赋值/角色的约束。如果您需要提升权限以编程方式公开其他数据,则可以使用sessionAsSigner关键字(它也是一个NotesSession,仅使用签名者的凭据,您自己,或者可以将NSF签名为服务器ID,以授予它更高的权限)。

然后像往常一样使用extDB句柄代替数据库关键字(它与http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.api.doc/r_domino_Session_getCurrentDatabase.html?lang=en-us差不多);如下所示:

代码语言:javascript
复制
var vw = extDB.getView(viewName)

如果NotesDatabase.getView()调用中不存在该名称的视图,则该调用将返回null,因此您需要确保它在那里,并以编程方式检查和处理空返回。

既然您使用的是@DbColumn的移植@函数,那么就像Frantisek建议的那样,使用这种方法可能很容易,但依赖于当前用户的NotesSession。要覆盖该用户的(缺乏)权限,并在单独的NSF中获得所有文档值的完全可见性,仍然需要使用这个关键字获得视图的句柄,如上面所示。/Edit

票数 4
EN

Stack Overflow用户

发布于 2015-05-20 14:31:24

根据您的代码,您也需要在@DbColumn公式中指定数据库。

代码语言:javascript
复制
var letters = @DbColumn([database], viewName, colNum);

你可以读到这里那里..。除了文档化的格式之外,您还可以使用API格式"server!!database"作为单个字符串值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30351931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档