【发布时间】:2015-12-23 12:53:28
【问题描述】:
如果您没有那么多文档,TypeAhead 可以正常工作。如果我删除了很多 typeAhead 作品。我认为在 typeahead 选项中有一个限制 @DbColumn() 。
如何解决这个问题?这就像一个 64k 大小的问题,但任何建议都很重要
提前致谢 C.A.
【问题讨论】:
如果您没有那么多文档,TypeAhead 可以正常工作。如果我删除了很多 typeAhead 作品。我认为在 typeahead 选项中有一个限制 @DbColumn() 。
如何解决这个问题?这就像一个 64k 大小的问题,但任何建议都很重要
提前致谢 C.A.
【问题讨论】:
您是否使用@DBColumn() 或@DBLookup() 来填充您的预输入?它们确实有 64K 的限制。 (当我阅读您的问题时,我不确定,所以我要求澄清)。
如果是这样,您可能需要考虑查看类似Can typeahead results be returned from a java function 的链接,
我最近完成了一项处理大量文档(数百万)的工作。我使用了它,但由于返回需要很长时间,我将其更改为获取视图中的第一个选定条目(基于 AJAX 预输入的值),从该条目创建一个 ViewNavigator,并使用 setBufferMaxEntires属性来限制返回的 ViewNavigator 的大小。这让这个过程变得非常快。
布赖恩
更新:
根据要求。我开始使用上面链接的结果,然后我添加了
ViewEntry startEntry = canQLView.getEntryByKey(searchValue, false);
allObjects.addElement(startEntry);
if (startEntry != null) {
ViewNavigator matchingEntries = canQLView.createViewNavFrom(startEntry);
matchingEntries.setBufferMaxEntries(10);
ViewEntry entry = matchingEntries.getFirst();
您可以看到我得到一个条目而不是 ViewEntryCollection,从该条目启动我的 ViewNavigator,并且 setBufferMaxEntries 属性限制了获取的数量 - 您可以更改它,但较小的数字是明智的,因为它是一个提前输入。
干杯, 布赖恩
【讨论】:
正确,@DbColumn() 有 64Kb 限制,这不是 XPages 特定的限制,各种博客文章都证实了这一点。确保仅在用户输入适当数量的可限制字符后才提供预输入。毕竟,typeahead 应该返回少量条目供用户选择,否则它没有多大用处。然后将@DbLookup 与“[PARTIALMATCH]”或getAllEntriesbyKey 一起使用。有许多博客文章提供了代码示例。
【讨论】: