【问题标题】:How to avoid the 64k limit when retrieving data from a view column?从视图列检索数据时如何避免 64k 限制?
【发布时间】:2014-04-24 09:25:07
【问题描述】:

我知道@DbColumn() 的 SSJS 版本与原始公式语言版本具有相同的 64k 限制。所以直到现在我都用NotesView.getColumnValues()代替,相信在这里我不会面临这样的限制。

昨天的紧急支持电话以及 IBM 的 this crash report 告诉我,这显然是错误的。

有问题的代码用于填充组合框中的 selectItems 控件;打开托管组合框的页面会导致服务器的 http 任务崩溃,进而导致整个服务器崩溃:

<xp:selectItems>
    <xp:this.value><![CDATA[#{javascript:database.getView("vwInvBySupplier").getColumnValues(0);}]]>
    </xp:this.value>
</xp:selectItems>

这是从视图中查找所有类别条目。我将组合用作同一页面上显示的视图的动态类别过滤器。

有什么替代方法可以从视图中检索所有类别条目的完整列表,即使检索到的数据超过 64k?

旁注:

我完全清楚,在组合框中显示 2000 多个条目对于某些人来说可能不是一个令人信服的可用性概念,但客户喜欢能够在一个地方查看所有可用条目,然后能够从中进行选择列表。至少标准的解决方案不是一个解决方案,它的视图面板充满了类别条目、曲折,并且需要逐步浏览大量页面。

应用程序在 Domino 9.0.1、WinSrv 2008/64k 上运行

【问题讨论】:

    标签: xpages xpages-ssjs


    【解决方案1】:

    幸运的是,JavaScript 数组不限于 64K。

    • 创建数组var values = [];
    • 使用视图导航器“遍历”视图并将条目值添加到数组 values.push("new value"),
    • return values

    【讨论】:

    • 作为替代方案,您可以使用 XSnippet 中的 DbColumn 和 DbLookup 的特殊 Java 类:openntf.org/XSnippets.nsf/…
    • 感谢您的输入;我只是将数据复制到我自己的测试服务器上;不能冒险让客户的服务器经常崩溃;)明天我会尝试这两个版本 - 但真正让我不安的是,仅使用该功能我就可以让 Domino 服务器崩溃,而我不能除了 IBM 的崩溃报告之外,找到有关我使用的功能的限制的任何信息。
    • 我认为,限制因素是最深层次的原始 Notes 功能。这就是为什么你不能欺骗他们。你是对的,这真的很糟糕,Domino 服务器崩溃了。但是,您有机会使用 Java 或 JavaScript 自行收集数据。
    • 我测试了 Java 版本,它就像一个魅力。所以我为所有视图实现了它,即使它们没有这个问题。唯一的缺点是它由于某种原因无法正确处理设置为“将多个值显示为单独的条目”的多值列,而是返回数组。但这可以处理。再次感谢!
    • 仅供参考:我将我的数组处理解决方案作为注释添加到片段代码(注释 #2;第一个太复杂...)
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多