【问题标题】:Using DynamicControl with datasource in an external database将 DynamicControl 与外部数据库中的数据源一起使用
【发布时间】:2016-11-13 15:47:38
【问题描述】:

我在使用此代码加载文档时遇到问题。

var c = getComponent("dynp")
c.show("contact",{action:'editDocument',documentId:unid})

或者实际上这只是一个烦人的问题。

我的 var unid 指向另一个数据库中的文档,但 c.show 期望该文档与 DynamicContent 代码位于同一数据库中。 因此,每次调用 c.show("contact",{action:'editDocument',documentId:unid})

时都会出错

错误

dynp 错误 mydynamic.xsp 调用方法 NotesDatabase.getDocumentByUNID(java.lang.String) 发生异常

customcontrols 数据源是

<xp:dominoDocument formName="myForm" var="doc1" databaseName="#{javascript:getExternaldb()}" />

因此文档加载正确。 但我仍然收到烦人的错误(管理员不高兴)

有没有办法避免这个错误?

【问题讨论】:

    标签: xpages dynamic-content


    【解决方案1】:

    我从未尝试过做你正在做的事情。我不明白你想要做什么。我什至从未看过 c.show 的动作部分。而且我很少使用 getComponent。

    您有一个动态面板和一个有效的自定义控件吗?您正在尝试控制编辑模式与阅读模式,对吗?为什么不直接设置一个 viewScoped 变量,比如 editMode=true / false。然后让自定义控件读入以确定模式。不需要那个动作业务...

    【讨论】:

    • c.show 中使用的参数可在文档中找到,详细说明如何从视图面板在动态内容控件中打开文档。见ibm.com/support/knowledgecenter/SSVRGU_9.0.1/…
    • c.show("contact",{action:'editDocument',documentId:unid}) 转换为 url /myDb.nsf#content=contact&action=editDocument&documentId=002767D4D4DABC5BC1257FE‌​A00420593 这有效美好的。这不是 editDocument/OpenDocument 的问题。当文档存储在另一个数据库中时,d.show 在 log.nsf 中给出错误“只是”令人讨厌的问题。我当然可以自己计算 URL,我相信它也可以正常工作,但是当 show 功能可用时,为什么不使用它呢?
    • 为什么不用它呢?由于您遇到问题的原因。内置的东西并不总是最容易使用的。 :)
    【解决方案2】:

    您没有将数据库名称作为参数传递。如果没有 ignoreRequestParams,我很确定这将假定当前数据库,覆盖您放入数据源中的任何内容。

    如果在参数中传递它是否有效?

    【讨论】:

    • 我尝试使用ignoreRequestParams="true/false" 并且文档加载正常。在打开自定义控件之前发生错误。我认为 d.show 命令在知道数据源之前就使用了 getDocumentByUNID。但是如果我可以在d.show 中将数据库名称作为参数传递,那就没问题了。但是我现在没有语法?
    • 其他参数的语法似乎与属性名称一致,所以我猜databaseName="#{javascript:getExternaldb()}" 会起作用(您仍然可以在 CSJS 中使用 SSJS,它只是在将 CSJS 传递给浏览器。
    • 我找到了正确的语法var db:NotesDatabase = getExternalDb(); var dbserver = db.getServer() var dbfilepath = @ReplaceSubstring(db.getFilePath(),"\\","/"); var dbname = dbserver+"!!"+dbfilepath; var unid =viewentries.getDocument().getUniversalID(); var d = getComponent("dynC"); d.show("contact",action:'editDocument',databaseName:dbname,documentId:unid})};
    • 但实际上不是d.show 给出了错误。我有一些代码检查来自 url-parameters 的 documentId 是否确实存在于当前数据库中。这给出了NotesDatabase.getDocumentByUNID(java.lang.String) 错误。感谢您的意见帮助我找到了解决方案。
    • 使用 OpenNTF Domino API,NotesDatabase.getApiPath() 可用,它返回服务器!!文件路径格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多